У меня были проблемы с Task
, которые я использовал ContinueWith
. В обратном вызове я не наблюдал/не обрабатывал Exception
при первой ошибке. Я узнал, что происходит в этом случае здесь:
Proper way to use .ContinueWith for TasksКто ждет задание по умолчанию?
Имей в виде, что, если ваши собственные продолжения не соблюдают исключения, человек, который ждет от этого общего рабочего процесса полного собираемся чтобы наблюдать это.
Что заставило меня задаться вопросом:
Кто официант Task
, не ждали?
Кто ждёт Task
по умолчанию?
Например:
public int HowOldAmI()
{
Task t = Task.Run(async() => {
await Task.Delay(5000);
throw new Exception("Something happened");
});
return 42;
}
В этом случае кто ждет Task
?
Ничего, в случае, если вы показали. Ничто «неявно» не ожидает завершения задачи - если вы решите создать задачу и не дождаться ее, любые исключения перейдут к незаметному обработчику исключений. –
Хорошо спасибо @ JonSkeet. Описанный где-то обработчик исключений _unobserved? Причина, по которой я спрашиваю, заключается в том, что моя библиотека отчетов об авариях ловит эти исключения, хотя реального сбоя не происходит, поэтому я пытаюсь правильно обрабатывать исключения, чтобы они не отображались в моих отчетах о сбоях. –
См. Ответ от Andrew ... –