Как работает async await? - C#

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

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

Не могу понять как все же отрабатывает async await. Насколько я понимаю их работу сначала должен отрабоать "Запуск асинхронной задачи" "Запуск асинхронного вызова" потом управление передается вызывающией функции Main(), а выполнение GetStringAsync() продолжается в бэкграунде "Продолжение программы" "Асинхронная задача завершена" В реальности все идет по другому: "Запуск асинхронной задачи" "Запуск асинхронного вызова" "Асинхронная задача завершена" "Продолжение программы" т.е так как если бы это был блокирующий код. Что я делаю не так?
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Console.WriteLine("Запуск асинхронного вызова");
  6. MethodAsync();
  7. Console.WriteLine("Продолжение программы");
  8. }
  9. static async void MethodAsync()
  10. {
  11. Task<string> returnedTaskResult = GetStringAsync();
  12. string str = await returnedTaskResult;
  13. //или так string str = await GetStringAsync();
  14. Console.WriteLine(str);
  15. }
  16. static async Task<string> GetStringAsync()
  17. {
  18. Console.WriteLine("Запуск асинхронной задачи");
  19. for (int i = 0; i < 1000000000; ++i) { }
  20. return "Асинхронная задача завершена";
  21. }
  22. }

Решение задачи: «Как работает async await?»

textual
Листинг программы
  1.  return Task.Run(delegate
  2.             {
  3.                 for (int i = 0; i < 10000000; ++i) { }
  4.                 return "Асинхронная задача завершена";
  5.             });

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


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

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

9   голосов , оценка 4.222 из 5

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

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

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