我有一個基於表單的應用程序。 UI由線程處理。 從UI線程創建3個線程來執行一些處理。在C中同步線程#
Thread t1 = new Thread(() => performprocessing());
Thread t2 = new Thread(() => performprocessing());
Thread t3 = new Thread(() => performprocessing());
現在,我想在UI線程執行語句後,所有的3個線程完成他們的execution.So,我做了以下內容:
do
{
} while (t1.IsAlive || t2.IsAlive || t3.IsAlive);
/*--execute statement---*/
但我想用戶界面保持響應以及。在這種情況下,UI線程停留在循環中,直到所有三個線程完成執行。 如何執行此操作?
我讀了關於手動和自動重置事件,但我不知道如何在這種情況下使用它們。 請親引導我。
請不要使用它。你的'if(workerCompleted == 3)'不是線程安全的。在這裏有可能發生關係之前的關係。請記住,OP沒有給出線程將如何使用的上下文,只是他有一個UI線程和3個獨立的工作線程。 –
回答更新以消除線程問題並使其更通用,謝謝@ dan-pantry – Marko