Что ж, вы можете выбросить исключение из вашего действия, поймать AggregateException
в GetPerson
(т. Е. Поместить блок try / catch вокруг Parallel.Invoke
), проверить, является ли оно правильным видом исключения, и вернуть null.
Это выполняет все , кроме , останавливая все потоки.Я думаю, что маловероятно, что вы легко сможете остановить уже запущенных задач , если не начнете получать токены отмены.Вы можете остановить выполнение дальнейших задач, сохранив значение boolean
, чтобы указать, не выпала ли какая-либо из задач на данный момент, и заставить каждую задачу проверять это перед запуском ... это несколько уродливо, но это будетработа.
Я подозреваю, что использование "полных" задач вместо Parallel.Invoke
сделало бы все это более элегантным.