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

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

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

Всем привет. Подскажите, пожалуйста, функция b() выполняется в выделенном потоке или нет? Если "нет", то как сделать "да"?
Листинг программы
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. namespace TestAsyncAwait
  6. {
  7. class Program
  8. {
  9. public delegate void MyDelegate();
  10. public static void Main()
  11. {
  12. Console.WriteLine("Главный поток: #" + Thread.CurrentThread.ManagedThreadId);
  13. MyDelegate d = new MyDelegate(a);
  14. d.Invoke();
  15. Console.ReadLine();
  16. }
  17. public static async void a()
  18. {
  19. Console.WriteLine("a() поток: #" + Thread.CurrentThread.ManagedThreadId);
  20. await b();
  21. Console.WriteLine("b() отработала");
  22. }
  23. public static async Task<bool> b()
  24. {
  25. Console.WriteLine("b() поток: #" + Thread.CurrentThread.ManagedThreadId);
  26. await Task.Delay(5000);
  27. return true;
  28. }
  29. }
  30. }
Результат:
Листинг программы
  1. Главный поток: #9
  2. a() поток: #9
  3. b() поток: #9
  4. b() отработала

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут