public async Task SomeProcess()
{
//.. some code
await Task.WhenAll(method1(), method2(), method3());
}
Используйте Task.WhenAll
, который возвращает новый Task
, который завершается после завершения всех предоставленных задач.
Вам не нужно создавать массив вручную, потому что Task.WhenAll
принимает params Task[]
.
Использование Task.WaitAll
, как вы пытались, блокирует текущий поток до завершения задач, что делает метод синхронным.
Кроме того, это может вызвать взаимные блокировки в зависимости от контекст синхронизации вашего приложения, так как method1
/ method2
/ method3
может попытаться возобновить работу в потоке, заблокированном WaitAll
.