Делегат и async - выполнится ли функция в потоке? - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Подскажите, пожалуйста, функция b() выполняется в выделенном потоке или нет? Если "нет", то как сделать "да"?
using System;
using System.Threading;
using System.Threading.Tasks;

namespace TestAsyncAwait
{
    class Program
    {
        public delegate void MyDelegate();
 
        public static void Main()
        {
            Console.WriteLine("Главный поток: #" + Thread.CurrentThread.ManagedThreadId);
 
            MyDelegate d = new MyDelegate(a);
            d.Invoke();
 
            Console.ReadLine();
        }
 
        public static async void a()
        {
            Console.WriteLine("a() поток: #" + Thread.CurrentThread.ManagedThreadId);
            await b();
            Console.WriteLine("b() отработала");
        }
 
        public static async Task<bool> b()
        {
            Console.WriteLine("b() поток: #" + Thread.CurrentThread.ManagedThreadId);
 
            await Task.Delay(5000);
            return true;
        }
    }
}
Результат:
Главный поток: #9
a() поток: #9
b() поток: #9
b() отработала

Решение задачи: «Делегат и async - выполнится ли функция в потоке?»

textual
Листинг программы
Главный поток: #9
a() поток: #9
b() поток: #9
1 2 3 4 5 6 7 8 9 10
b() отработала

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


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

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

6   голосов , оценка 4 из 5