繁体   English   中英

C#winforms带参数的方法上的多线程

[英]C# winforms multithread on method with parameters

我有一个带有3个参数的方法,我想在上面创建一个线程。 我知道如何为没有任何参数和对象类型参数的方法创建线程。 方法头是:

public void LoadData(DataGridView d, RadioButton rb1, RadioButton rb2){
//} 

除了Tzah的答案外,您还没有提及线程的生存时间和管理。 这是一个考虑的好地方-只要编写高质量的代码即可。

如果您使用具有3个或更多参数的线程池中的线程 ,请使用我以前的答案: C#-ThreadPool QueueUserWorkItem使用吗?

如果您使用的是.Net 4.0+,请考虑使用“任务”

您可以像这样使用Lambda表达式

new Thread(() => LoadData(var1, var2, var3)).Start();

要么

Thread T1 = new Thread(() => LoadData(var1, var2, var3));
T1.Start();

由于Tzah的答案肯定会起作用,因此.NET Framework中使用线程的推荐方法现在驻留在Task Parallel Library TPL在ThreadPool提供了一个抽象, ThreadPool管理着一个供我们使用的线程池,而不是创建和销毁线程,这具有不可忽视的成本。 它们可能不适合所有类型的卸载工作(例如非常长时间运行的cpu消耗任务),但是它们肯定会涵盖大多数情况。

与您使用TPL的请求等效的示例是使用Task.Run

Task task = Task.Run(() => LoadData(var1, var2, var3));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM