2010-07-08 2 views
1

Мне нужно вызвать несколько веб-сервисов при создании страницы MVC, поэтому я проделываю эту работу через threadpool и с помощью ManualResetEvents, чтобы определить, когда у меня есть результаты.Передача исключений через потоки в приложении MVC

Если одна из нитей генерирует исключение, это приведет к сбою приложения. У меня есть обработка исключений, настроенная через фильтр, но мне нужно сначала вернуть исключение в основной поток рендеринга.

Я не могу использовать BackgroundWorker, потому что мне нужно «присоединиться» к работе и отобразить страницу.

Предложения? Кто угодно?

ответ

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(); 
    } 
} 
+0

Хорошо зовут Хаос. Я надеялся на что-то более общее (для этого я создал DSL на основе LINQ), но я полагаю, что я могу работать в очереди с исключениями из-за слишком больших проблем. Благодарю. –

Смежные вопросы