У меня есть метод, который создает некоторые задачи, а затем ожидает их с WaitAll перед возвратом. Проблема в том, что если эти задачи были отменены, то WaitAll генерирует исключение AggregateException , содержащее множество TaskCanceledException s.
Это означает, что WaitAll будет вызывать исключения в двух разных случаях:
Последнее полностью вписывается в определение неприятного исключения : это исключение, возникшее в совершенно неисключительных обстоятельствах, поэтому я должен его перехватить, чтобы возобновить нормальный поток управления. К счастью, поймать его легко, правда? Просто добавьте catch (AggregateException)
и - подождите, это тот же тип, который выдается при фатальной ошибке.
Мне нужно дождаться завершения выполнения задач, прежде чем я вернусь (мне нужно знать, что они больше не используют свои соединения с базами данных, дескрипторы файлов или что-то еще), поэтому мне нужен WaitAll или что-то подобное . И если какая-либо из задач не удалась, я действительно хочу, чтобы эти исключения распространялись как необработанные исключения. Я просто не хочу исключений для отмены.
Как я могу запретить WaitAll
генерировать исключения для отмененных задач?