1
我需要在構建MVC頁面時調用一些web服務,所以我通過線程池對線程進行線程化,並使用ManualResetEvents來確定何時獲得了我的結果。在MVC應用程序中跨線程傳遞異常
如果其中一個線程拋出異常,它會崩潰應用程序。我通過過濾器設置了異常處理,但我需要首先將異常返回到主要呈現線程。
我無法使用BackgroundWorker,因爲我需要「連接」工作並呈現頁面。
對此提出建議?任何人?
我需要在構建MVC頁面時調用一些web服務,所以我通過線程池對線程進行線程化,並使用ManualResetEvents來確定何時獲得了我的結果。在MVC應用程序中跨線程傳遞異常
如果其中一個線程拋出異常,它會崩潰應用程序。我通過過濾器設置了異常處理,但我需要首先將異常返回到主要呈現線程。
我無法使用BackgroundWorker,因爲我需要「連接」工作並呈現頁面。
對此提出建議?任何人?
您可以保留一個有例外的隊列,並且在最終設置了ManualResetEvent
時,請在繼續之前檢查隊列。
private readonly Queue<Exception> _exceptions = new Queue<Exception>();
private void DoWork(object o)
{
try
{
// ...
}
catch (Exception ex)
{
_exceptions.Enqueue(ex);
}
finally
{
done.Set();
}
}
好通話混沌。我希望有更通用的東西(我爲此創建了一個基於LINQ的DSL),但是我想我可以在異常隊列中工作,而不會遇到太多麻煩。謝謝。 – 2010-07-08 21:49:19