Передача исключений между потоками в приложении MVC - PullRequest
1 голос
/ 08 июля 2010

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

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

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

Предложения?Кто-нибудь?

1 Ответ

2 голосов
/ 08 июля 2010

Вы можете сохранить очередь с исключениями, и, когда ManualResetEvent будет наконец установлен, проверьте очередь, прежде чем продолжить.

private readonly Queue<Exception> _exceptions = new Queue<Exception>();


private void DoWork(object o)
{
    try
    {
        // ...
    }
    catch (Exception ex)
    {
        _exceptions.Enqueue(ex);
    }
    finally
    {
        done.Set();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...