我需要在构建MVC页面时调用一些web服务,所以我通过线程池来处理工作,并使用ManualResetEvents来确定何时获得我的结果。
如果其中一个线程抛出异常,它会使应用程序崩溃。我通过Filter设置了异常处理,但是我需要首先将异常恢复到主渲染线程。
我无法使用BackgroundWorker,因为我需要“加入”工作并渲染页面。
连连呢?任何人吗?
答案 0 :(得分:2)
您可以使用例外保留队列,并在最终设置ManualResetEvent
时检查队列,然后再继续。
private readonly Queue<Exception> _exceptions = new Queue<Exception>();
private void DoWork(object o)
{
try
{
// ...
}
catch (Exception ex)
{
_exceptions.Enqueue(ex);
}
finally
{
done.Set();
}
}