c# - Threadpool在完成时通知,而不是阻塞主线程

时间:2013-11-27 06:16:39

标签: c# multithreading threadpool

所以我想知道在线程池执行完成时调用函数的最佳方法是什么?

我必须通过线程池处理数据集。集合A必须在集合B之前完成。我遇到的问题是,在处理集合B之前,我不能让主线程等到集合A完成。所以我需要在线程计数之后触发事件或调用函数池已减少到零(我使用Interlocked对象来维护线程数),我只是想知道这样做的最佳方法是什么?

感谢您的帮助,我希望我的问题不是模糊。

2 个答案:

答案 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);