我有幾個線程在我的WPF應用程序的一個線程池中運行。我需要監視它們,可能來自另一個線程,以確定是否所有這些線程都已終止。 我將如何能夠實現這一點。如何從另一個線程監視C#線程
爲了簡單起見,我使用場景是:
- 點擊按鈕
- 啓動多個線程的線程池。
- 啓動另一個線程來監視ThreadPool中的那些線程
- 鎖定WPF應用程序的UI。
- 當步驟3中的線程設置全局值以指示(2)中啓動的線程已終止時,釋放鎖定。
我有幾個線程在我的WPF應用程序的一個線程池中運行。我需要監視它們,可能來自另一個線程,以確定是否所有這些線程都已終止。 我將如何能夠實現這一點。如何從另一個線程監視C#線程
爲了簡單起見,我使用場景是:
手頭的問題實際上太侷限了。爲了適應最初的有缺陷的設計,我必須採用Ad Hoc方法。
我的方法是隻需在線程啓動時增加計數器,並在線程終止時減少計數器的值。爲了監視計數器的價值,我發起了另一個線程來簡單地監視計數器的值。也許不是一個優雅的方法,但似乎工作正常。
將線程池中的所有線程放入數組中。當您想等待池線程退出時,請使用WaitHandle.WaitAll
等待線程完成。
@亨克霍爾曼:我想他會寫他自己的線程池,因爲他想控制線程。如果使用內置游泳池,那麼整個創意就會有缺陷。 –
[WaitHandle.WaitAll 64句柄限制的解決方法的可能的重複?](http://stackoverflow.com/questions/2702545/workaround-for-the-waithandle-waitall-64-handle-limit) –
儘管非常不同的標題這是關於同樣的問題,並有一個解決方案。 –