黑马程序员技术交流社区

标题: 一个关于线程的问题 [打印本页]

作者: 刘秋菊    时间: 2012-7-22 22:01
标题: 一个关于线程的问题
  private void button2_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(count);
            thread.Start();
            MessageBox.Show("线程");
        }
        void   count()
        {
            for (int i = 0; i < 999999999; i++)
            {
               
            }
        }



count() 是方法对吧?可是看Thread thread = new Thread(count);,count()又应该是一个 委托,这怎么解释呢?
作者: 刘建素    时间: 2012-7-22 22:17
正常写的话应该是
ThreadStart start = new ThreadStart(方法名);
查帮助ThreadStart 类型为委托
然后new Thread(start);将委托传入
我们平时都习惯简写直接把方法放入new Thread中是因为C#会自动帮我们识别为传入为委托 而非方法

作者: 黑马杨凯    时间: 2012-7-22 23:28
本帖最后由 黑马杨凯 于 2012-7-22 23:38 编辑

可以复习下委托
通过查看Thread类的构造方法
public Thread(ThreadStart start);参数为ThreadStart 类型
查看ThreadStart
public delegate void ThreadStart();
这是声明的委托,当做类型来用,所以构造函数public Thread(ThreadStart start);的参数是一个委托,调用此够构造函数需要一个委托,而Count()正好与声明的委托类型ThreadStart匹配,可以赋给委托,而委托赋值可以使用简化写法如
ThreadStart start=Count;(也就是ThreadStart start = new ThreadStart(Count); 的缩写),所以你传入的是一个 new ThreadStart(Count)委托,并且这个委托指向Count()方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2