WPF выдает исключение из рабочего потока, но продолжает - PullRequest
0 голосов
/ 27 января 2011

У меня есть сценарий, где рабочий поток выполняет задачу, которая выглядит как

try
{    
    for()
    {
        functionA();
        functionB(); 
    }
}
catch(Exception ex)
{
    throw new Exception("Message");    
}

Я в основном повторно выкидываю исключение, чтобы после завершения работника поток пользовательского интерфейса получал исключение. Теперь, если исключение возникает в functionA, я хотел бы вызвать исключение, но продолжить цикл и не останавливаться. Как мне этого добиться?

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

1 Ответ

1 голос
/ 27 января 2011

Примерно так:

List<Exception> errorsLog = new List<Exception>();

for()
{
    try
    {
       functionA();
    }
    catch(Exception e) {
       errorsLog.Add(e);
    }

    try
    {
       functionB();
    }
    catch(Exception e) {
       errorsLog.Add(e);
    }
}

if (errorsLog.Count > 0) {
   throw new AggregateException(errorsLog);
}

Где AggregateException - ваше пользовательское исключение, которое содержит список других исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...