У меня есть два асинхронных механизма, которые не имеют прямого отношения друг к другу (они оба выписывают, хотя) .. и я не хочу ни блокировать эффективность другого ..
Если я помещу одно из заданий в набор задач, подобных этому:
var list = new List<Task>();
foreach (var t in things)
{
list.Add(My.MethodAsync(t)); // method returns Task
}
await Task.WhenAll(t);
Я знаю, что он не будет блокироваться, и потенциально может работать параллельно ..
Если я хотя бы другой асинхронный метод:
var list = new List<Task>();
foreach (var t in things)
{
list.Add(My.MethodAsync(t)); // method returns Task
}
foreach (var t in things)
{
await My.OtherAsync(t)); // method returns Task
}
await Task.WhenAll(t);
Task.WhenAll () должен ждать завершения второго foreach ...
Следовательно, возможно ли что-то подобное / рекомендовать?
var allTasks = new List<Task>();
foreach (var t in things)
{
allTasks.Add(My.MethodAsync(t)); // method returns Task
allTasks.Add(My.OtherAsync(t)); // method returns Task
}
await Task.WhenAll(t);
Распечатав это, даже если сами задачи являются независимыми, было бы неплохо, если бы возникла ошибка, если обе не выводят .. хмм
вопрос все еще стоит;)