Используются ли потоки? - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д