@hax
junior developer

Почему зависает Task.WhenAll() при выполнении нескольких задач?

Я хочу одновременно запустить несколько задач
static async void TestMethod()
        {
            Task<string>[] allTasks = new Task<string>[5];

            for(int i = 0; i < 5; i++)
            {
                int j = i;
                allTasks[i] = new Task<string>(() => { return "#" + j; });
            }

            var resultTask = Task.WhenAll(allTasks);
            Console.WriteLine(resultTask.Status);

            var result = resultTask.Result;

            foreach (var res in result)
            {
                Console.WriteLine("1");
                Console.WriteLine(res);
            }

            Console.WriteLine("END");
        }


Но данный код после выполнения WhenAll зависает, resultTask имеет статус WaitingForActivation, до строки resultTask.Result выполнение так и не доходит
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Конструктор new Task({} => {}) только инициирует задачу.
На выполнение ее затем можно поставить вызвав метод Start.
Пример:
var task = new Task({} => {});
task.Start();

Также запустить задачу можно с помощью Task.Run или TaskFactory.StartNew методов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы