Как ожидать завершения задачи в асинхронном режиме - PullRequest
0 голосов
/ 29 апреля 2019

Я пишу фрагмент кода, который запускает несколько задач, и в конце мне нужно дождаться завершения задачи, чтобы двигаться вперед.

Пример кода -

var taskToWaitOn = Task.Factory.StartNew(Method1);
Task.Factory.StartNew(Method2);
Task.Factory.StartNew(Method3);

taskToWaitOn.Wait();

Здесь, если я жду taskToWaitOn Я фактически блокирую поток и, следовательно, в 4-потоковом процессоре я теряю 25% вычислительной мощности.

Есть ли способ, с помощью которого я могу ожидать выполнения этой задачи в асинхронном режиме, когда поток фактически не блокируется при ожидании и может свободно обрабатывать другую логику.

1 Ответ

0 голосов
/ 29 апреля 2019

Использование клавиш async / await сделает то, что вы хотите достичь.

Задача модели асинхронного программирования в C #

public async Task testMethod() {
    callToSyncMethod(); // This will block the thread
    await callToAsyncMethod; // This will not
    callToAnotherSyncMethod(); // This will block but executed after the async is complete
}
...