public static async Task<int> CalculateAsync()
{
Thread.Sleep(1000);
Console.WriteLine("ThreadId={0}, CalculateAsync", Thread.CurrentThread.ManagedThreadId);
return 0;
}
static async void Do()
{
Console.WriteLine("ThreadId={0}, Do Before", Thread.CurrentThread.ManagedThreadId);
int x = await CalculateAsync();
Console.WriteLine("ThreadId={0}, Do After, x = {1}", Thread.CurrentThread.ManagedThreadId, x);
}
static void Main(string[] args)
{
for (int i = 0; i < 10; i++ )
Do();
Console.ReadKey();
}
Почему метод Do выполняется синхронно ?
По идее int x = await CalculateAsync();
не должно останавливать поток вызвавший Do()
а запустить в фоне и после выполенения CalculateAsync вызвать Console.WriteLine("ThreadId={0}, Do After, x = {1}", Thread.CurrentThread.ManagedThreadId, x);