Используются ли потоки? - C#
Формулировка задачи:
Правда ли что при использовании асинхронных методов (async / await) без Task.Run не используются потоки из пула, а все делается в основном потоке, но асинхронно? Например:
Будет ли этот метод целиком выполнен в вызывающем потоке?
async Task MethodAsync()
{
await Task.Delay(1000);
// actions...
}Решение задачи: «Используются ли потоки?»
textual
Листинг программы
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Main: " + Thread.CurrentThread.ManagedThreadId);
await MainAsync();
Debug.WriteLine("Main End: " + Thread.CurrentThread.ManagedThreadId);
}
static async Task MainAsync()
{
Debug.WriteLine("Main Async: " + Thread.CurrentThread.ManagedThreadId);
await thisIsAsync();
Debug.WriteLine("Main AsyncEnd: " + Thread.CurrentThread.ManagedThreadId);
}
private static async Task thisIsAsync()
{
Debug.WriteLine("thisIsAsyncStart: " + Thread.CurrentThread.ManagedThreadId);
await Task.Delay(1000);
Debug.WriteLine("thisIsAsyncEnd: " + Thread.CurrentThread.ManagedThreadId);
}