所以我想知道在线程池执行完成时调用函数的最佳方法是什么?
我必须通过线程池处理数据集。集合A必须在集合B之前完成。我遇到的问题是,在处理集合B之前,我不能让主线程等到集合A完成。所以我需要在线程计数之后触发事件或调用函数池已减少到零(我使用Interlocked对象来维护线程数),我只是想知道这样做的最佳方法是什么?
感谢您的帮助,我希望我的问题不是模糊。
答案 0 :(得分:0)
您可以使用基于等待和信号标准的CountdownEvent单击[此处](http://msdn.microsoft.com/en-us/library/system.threading.countdownevent(v=vs.110).aspx)以获取更多信息
答案 1 :(得分:0)
要解决此问题,我建议您使用任务和 ContinueWith()方法。 Internaly Tasks使用 ThreadPool 类,但它们更灵活。例如:
Task.Run(() => Console.WriteLine("Main task"))
.ContinueWith(task => Console.WriteLine("Continue task"), TaskContinuationOptions.NotOnFaulted);