簡體   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