使用全局变量作为params唯一的方法还是有一种更时尚的方式来做到这一点?
答案 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或更高版本,还可以查看Task和Task Parallel Library。
答案 3 :(得分:0)
这种语言不可知的方式是,当方法只能接受一个参数并且您有多个数据时,创建一个新类,其中包含您想要的每个参数的属性,然后只传递该类的一个实例。 (这是您对与事件处理相关的EventArgs
对象所做的工作。)
话虽如此,正如其他人所说,使用lambdas的闭包是一种相当灵活和简单的做事方式,在实践中往往更方便。