C# 线程,如何使线程运行带有参数的方法
本文关键字:线程 参数 方法 行带 运行 何使 | 更新日期: 2023-09-27 18:33:22
使用全局变量作为参数是唯一的方法还是有更时髦的方法?
您可以使用 ParameterizedThreadStart 启动带有参数的线程。
例:
Thread newThread = new Thread(myObj.DoMethod);
newThread.Start(parameter);
虽然,我通常最终会使用 lambda
Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3));
newThread.Start();
这可能更方便,因为 ParameterizedThreadStart 将单个object
作为参数。这很少是我想要的。
您可以使用
一个简单的Action<T>
使用闭包,然后使用参数调用您的方法:
var thread = new Thread(() =>
{
CallSomeMethod(someParam);
});
正如 root46 已经回答的那样,如果直接使用线程,请使用 ParameterizedThreadStart。但是,如果您使用的是 .NET 4 或更高版本,也请查看任务和任务并行库。
执行此操作
的更多语言不可知的方法是,当该方法只能接受单个参数并且您拥有多个数据时,创建一个新类,其中包含所需每个参数的属性,然后只传递该类的实例。 (这是您看到的与事件处理相关的EventArgs
对象所完成的操作。
话虽如此,正如其他人所说,使用 lambda 的闭包是一种相当流畅和简单的做事方式,在实践中往往更方便。