使用全局变量作为参数是唯一的方法还是有更时尚的方法?
问问题
139 次
4 回答
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
作为参数。这很少是我想要的。
于 2012-05-07T18:14:16.647 回答
2
您可以使用一个简单的闭包Action<T>
,然后使用参数调用您的方法:
var thread = new Thread(() =>
{
CallSomeMethod(someParam);
});
于 2012-05-07T18:14:51.637 回答
0
正如 root46 已经回答的那样,如果直接使用线程,则使用ParameterizedThreadStart。但是,如果您使用 .NET 4 或更高版本,还可以查看Task和Task Parallel Library 。
于 2012-05-07T18:18:03.070 回答
0
更与语言无关的方法是,当该方法只能接受一个参数并且您有多个数据时,请为您想要的每个参数创建一个具有属性的新类,然后只需传递一个那堂课。(这就是您看到的EventArgs
与事件处理相关的对象所做的事情。)
话虽如此,正如其他人所说,使用 lambdas 的闭包是一种相当巧妙和简单的做事方式,在实践中往往更方便。
于 2012-05-07T18:26:55.960 回答