Я бы сделал это немного по-другому.Предполагая, что
serviceClient.GetAllAsync(filter)
делает что-то в другом потоке / задаче или выполняет запрос по некоторому URL, я не вижу необходимости использования Paralle.ForEach.
Что я хотел бы сделать, это создать список задач и вызывать их с помощью метода Task.WaitAll.Таким образом, вы можете обрабатывать любые исключения для ошибочных задач.
Фрагмент кода для этого будет выглядеть примерно так:
var queryService = filters.Select(x => sClient.GetAllAsync()).ToArray();
try
{
// Wait for all the tasks to finish.
Task.WaitAll(queryService);
}
catch (AggregateException e)
{
//At least one of the Task instances was canceled.
//If a task was canceled, the AggregateException contains an OperationCanceledException in its InnerExceptions collection.
}