Я рекомендую вам начать с ввода в async
/ await
и следить за официальной документацией MSI в TAP .
Как я упоминал в своем вступительном сообщении в блоге, есть несколько Task
членов, которые являются задержками с TPL и не используют чистый код async
. new Task
и Task.Start
следует заменить на Task.Run
(или TaskFactory.StartNew
). Аналогично, Thread.Sleep
следует заменить на Task.Delay
.
Наконец, я рекомендую вам не использовать Task.WaitAll
; ваше консольное приложение должно просто Wait
на одном Task
, которое использует Task.WhenAll
. При всех этих изменениях ваш код будет выглядеть так:
class Program
{
static void Main(string[] args)
{
MainAsync().Wait();
}
public static async Task MainAsync()
{
Task task1 = Task1();
Task task2 = Task2();
await Task.WhenAll(task1, task2);
Debug.WriteLine("Finished main method");
}
public static async Task Task1()
{
await Task.Delay(5000);
Debug.WriteLine("Finished Task1");
}
public static async Task Task2()
{
await Task.Delay(10000);
Debug.WriteLine("Finished Task2");
}
}