线程有什么区别

时间:2014-09-30 07:06:01

标签: c# multithreading

之间有什么区别
Thread t = new Thread (new ThreadStart (Go));

Thread t = new Thread (Go);

其中Go是一种方法

4 个答案:

答案 0 :(得分:7)

唯一不同的是,Go是一个可以匹配多个Thread构造函数重载的方法组 - 例如,因为ThreadStartParameterizedThreadStart都有一个构造函数new Thread(Go),以下方法会使static void Go() { } static void Go(object val) { } 版本模糊不清:

new Thread (new ThreadStart (Go))

{{1}}通过明确声明委托类型消除歧义,但:除了它们之外,它们在C#2或更高版本上是相同的。注意:在C#2之前,较短的版本不是合法的语法。

答案 1 :(得分:4)

无。他们是一回事。

documentation说明了这一点:

  

创建线程时,Visual Basic和C#用户可以省略ThreadStartParameterizedThreadStart委托构造函数。 [...]在C#中,只需指定线程过程的名称即可。编译器选择正确的委托构造函数。

答案 2 :(得分:0)

第二个是快捷方式!基本上,做同样的事情。但是,在对象threadstart中,有一组参数可以通知。

答案 3 :(得分:0)

没有,我是gess。 Thread的构造函数采用类型为ThreadStart的{​​{1}}“构造”。

delegate

// constructor of Thread public Thread(ThreadStart start); 定义为:

ThreadStart

由于每个方法都可以用作委托,因此您可以直接将您的方法传递给构造函数。通过明确写作..

namespace System.Threading
{
    // Summary:
    //     Represents the method that executes on a System.Threading.Thread.
    [ComVisible(true)]
    public delegate void ThreadStart();
}

..你只需再把它包起来。