我想知道如何在運行時安全地更改線程應該等待的EventWaitHandle。如何在運行時替換WaitHandle線程應該等待
假設有兩個線程(A和C)通過EventWaitHandles同步。 A循環執行其工作,並且C等待,直到它從A收到通知它可以開始執行其工作(例如通過AutoResetEvent)。這種模式是ACAC的...
後來一個新的線程(B)啓動(例如通過用戶操作),它的工作應該在兩個先前的線程之間以這種方式執行:A完成它的工作,然後發出信號B並且一旦B完成它的信號C.現在的模式是ABCABC ...
因此,在線程C正在等待與A共享的EventWaitHandle並且稍後應該有一個安全機制使得C在另一個EventWaitHandle上等待共享B.在我看來,棘手的部分是替換C使用的EventWaitHandle,因爲一旦完成,我應該很容易啓動B,它將使用EventWaitHandle等待A作業和EventWaitHandle發送C作業信號。該機制還應該提供一種方法來安全地卸載線程B並返回到只有線程A和C正在工作的初始狀態。
有沒有一種安全的方法來完成這與EventWaitHandle?如果沒有,任何其他建議,將不勝感激。
如果您使用的是.NET 4.0,那麼使用任務將會使這個更簡單。從本質上講,你有三個任務,A「繼續」B和B「繼續」C「。在沒有任何事情要做的情況下,B本質上什麼都不做,但是當有時候會做某事。而不是試圖從混音中「插入」和「刪除」B,它可能/應該始終處於混音中。這將使這一切都變得難以維持。 – 2011-02-18 10:34:39