所以我想知道在線程池執行完成時調用函數的最佳方式是什麼?我不得不通過線程池處理的數據集。 Set A必須在Set B之前完成。我遇到的問題是,在處理Set B之前,我不能讓主線程等待Set A完成。所以我需要在線程計數之後觸發一個事件或調用一個函數池已經減少到零(我正在使用一個Interlocked對象來維持一個線程數),我只是想知道這樣做的最好方法是什麼?c# - 線程池完成時通知,不阻塞主線程
感謝您的幫助,我希望我的問題不是模糊的。
所以我想知道在線程池執行完成時調用函數的最佳方式是什麼?我不得不通過線程池處理的數據集。 Set A必須在Set B之前完成。我遇到的問題是,在處理Set B之前,我不能讓主線程等待Set A完成。所以我需要在線程計數之後觸發一個事件或調用一個函數池已經減少到零(我正在使用一個Interlocked對象來維持一個線程數),我只是想知道這樣做的最好方法是什麼?c# - 線程池完成時通知,不阻塞主線程
感謝您的幫助,我希望我的問題不是模糊的。
爲了解決這個問題我建議你使用任務與ContinueWith()方法。 Internaly任務使用ThreadPool類,但它們更靈活。例如:
Task.Run(() => Console.WriteLine("Main task"))
.ContinueWith(task => Console.WriteLine("Continue task"), TaskContinuationOptions.NotOnFaulted);
您可以使用它是基於等待和信號標準CountdownEvent點擊【這裏】(http://msdn.microsoft.com/en-us/library/system.threading.countdownevent(v=vs.110).aspx)瞭解更多信息
你可以得到一些想法:http://www.codeproject.com/Articles/7933/Smart-Thread-Pool –