Используются ли потоки? - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы