winform中console.write的使用、线程的产生、线程的使用、创建单例模式

来源:互联网 发布:ug安装java虚拟机 编辑:程序博客网 时间:2024/05/22 04:24

1  winform中的,不能像控制台一样正常在输出窗口中查看结果,可以  启动(F5),调试--窗口---输出,在下面的输出中就可以看到打印的字符;

2 主窗口是一个线程,如果不新创建线程的话,所有的事件都是由主线程来做,导致事件不可以同时进行。需要创建线程来执行。

  创建一个线程对象:

  Thread thread=new Thread( test );  //test执行线程要做的方法

  thread.Start();// 标记线程已就绪,随时可以被执行;cpu决定什么时候执行此线程。

3 产生线程的4个步骤

 1)编写产生线程要执行的方法;

 2)引用using System.Threading命名空间;

 3)实例化Thread类,并传入一个指向线程所要运行方法的委托,(这时候线程已经产生,但是还没有运行)

 4)调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定。

4 异常:不允许跨线程访问。从不是创建控件的线程访问它,若这些控件都是由主窗体创建,也就是说不是主线程在访问。

5 取消跨线程的访问,control类:是winform中所有控件的基类,所有的控件都继承于control,

6 formclosing,当点击关闭窗体时

7 formclosed,已经关闭窗体了。

8 thread.Abort()//线程被终止后,就不可以再被Start()了。thread==null  :线程是否关闭。

9 Thread.Sleep(2); 静态方法,可以使当前线程停止一段时间运行。

10 Thread.CurrentThread 获得当前线程的引用

 11   创建单例模式的步骤
        1) 创建私有构造函数
        2 )提供一个静态方法,返回一个对象
        3 )创建一个单例 

namespace 单例模式{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        /// <summary>        /// 点击一下button1,就会出现Form2,创建单例模式,始终只出现一个form2        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button1_Click(object sender, EventArgs e)        {                Form2 form2 = Form2.GetSingle();// new Form2();                form2.Show();        }    }}

form2中的代码,在form1中的button中,点击后产生form2,自始至终产生的只有一个form2

namespace 单例模式{    public partial class Form2 : Form    {        //全局唯一的一个单例        public static Form2 FormSingle = null;        private  Form2()//将构造函数私有化。提供一个静态的方法返回一个对象        {            InitializeComponent();        }        //这里注意一点,静态方法中访问的成员只能是静态成员        public static Form2 GetSingle()//构造一个方法,返回一个对象        {            if (FormSingle==null)            {                FormSingle = new Form2();//这里调用同一个类中的私有构造函数            }                       return FormSingle;        }    }}