C#Threading,如何使线程运行params方法?

时间:2012-05-07 18:12:18

标签: c# multithreading

使用全局变量作为params唯一的方法还是有一种更时尚的方式来做到这一点?

4 个答案:

答案 0 :(得分:4)

您可以使用ParameterizedThreadStart启动带参数的线程。

示例:

Thread newThread = new Thread(myObj.DoMethod);
newThread.Start(parameter);

虽然,我通常最终使用lambdas

Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3));
newThread.Start();

这可能更方便,因为ParameterizedThreadStart只需一个object作为参数。这很少是我想要的。

答案 1 :(得分:2)

您可以使用简单的Action<T>来使用闭包,然后使用参数调用您的方法:

var thread = new Thread(() =>
{
    CallSomeMethod(someParam);
});

答案 2 :(得分:0)

由于root46已经回答,如果直接使用线程,则使用ParameterizedThreadStart。如果您使用的是.NET 4或更高版本,还可以查看TaskTask Parallel Library

答案 3 :(得分:0)

这种语言不可知的方式是,当方法只能接受一个参数并且您有多个数据时,创建一个新类,其中包含您想要的每个参数的属性,然后只传递该类的一个实例。 (这是您对与事件处理相关的EventArgs对象所做的工作。)

话虽如此,正如其他人所说,使用lambdas的闭包是一种相当灵活和简单的做事方式,在实践中往往更方便。