我想在ThreadPool
中几次启动一个简单的委托操作。问题是我需要等待所有的动作完成。如何处理?线程池和委托操作 - WaitHandle.WaitAll()
Action<int> someAction = i => { /* do something */ }
foreach (var yIndex in yRange)
{
foreach (var xIndex in xRange)
{
// ThreadPool.QueueUserWorkItem(??? someAction(yIndex)) - how to start someAction(int) in a thread pool
}
WaitHandle.WaitAll(doneEvents); // how to wait for to finish?
}
我知道我可以使用一个新类并创建一个ManualResetEvent
回调。但问题是someAction(int)
使用了在主类中实现的方法很多...
*但问题是someAction(int)使用了许多在主类中实现的方法* - 你能详细说明一下吗?你的意思是你需要从在线程执行的任务中调用UI线程(在这种情况下,你可能不使用'WaitHandle.WaitAll'来避免阻塞)? – Noseratio
不,我有一个工作类(不是UI线程),应该运行一些异步操作。现在我想等待'x-foreach'循环完成,因为你可以看到'someAction'依赖于'yIndex'。 – Nickon