Thread Vs ParameterizedThreadStart

时间:2011-12-13 09:38:23

标签: asp.net multithreading

我是.NET的新手。我在我的项目中使用Threads。请检查下面的代码 -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication6
{
    class Program
    {
        private void Amadeus(object str)
        {
            Console.WriteLine(str.ToString());
        }

        static void Main(string[] args)
        {
            Program objClass = new Program();

            //One way to call Amadeus Method...
            Thread objThread = new Thread(objClass.Amadeus);
            objThread.Start("Amadeus without ParameterizedThreadStart");

            //Other way to call Amadeus Method...
            ParameterizedThreadStart objParamThread = new ParameterizedThreadStart(objClass.Amadeus);
            Thread ObjThreadParam = new Thread(objParamThread);
            ObjThreadParam.Start("Amadeus with ParameterizedThreadStart");

            Console.ReadLine();
        }
    }

}

你能不能告诉我两种方式之间有什么区别,因为两者都做同样的工作。

提前致谢。

2 个答案:

答案 0 :(得分:1)

两者都是一样的。阅读MSDN documentation

  

Visual Basic和C#用户可以省略ThreadStart或   创建线程时ParameterizedThreadStart委托构造函数。   在Visual Basic中,在传递方法时使用AddressOf运算符   到Thread构造函数;例如,Dim t As New Thread(AddressOf   ThreadProc的)。在C#中,只需指定线程过程的名称。   编译器选择正确的委托构造函数。

答案 1 :(得分:1)

是的,两者都在做同样的事情。

您可以通过传入一个带有ThreadStart(void ThreadStart())或ParameterisedThreadStart(void ParameterisedThreadStart(Object x))签名的函数来创建线程。

编译器正在根据您传递给构造函数的参数类型来确定要调用的构造函数。