Почему код выполняется синхронно? - C#

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

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

Всем привет! Это мое первое сообщение на форме, первая попытка подружиться с .net и соответственно первый блин Подскажите пожалуйста, почему этот код выполняется синхронно и главное как его заставить выполниться асинхронно. Спасибо!
Листинг программы
  1. using System.Windows;
  2. using System.Net;
  3. using System.Threading.Tasks;
  4. using System.Collections.Generic;
  5. namespace AsyncFetch
  6. {
  7. public partial class MainWindow
  8. {
  9. public MainWindow()
  10. {
  11. InitializeComponent();
  12. }
  13. private async void GetButtonClick(object sender, RoutedEventArgs e)
  14. {
  15. var urls = new List<string>
  16. {
  17. "http://msdn.microsoft.com",
  18. "http://google.com",
  19. "http://tumblr.com",
  20. "http://bing.com",
  21. "http://yandex.ru",
  22. "http://dfbfgnbdsgv.com",
  23. "http://ya.ru"
  24. };
  25. foreach (string url in urls)
  26. {
  27. dataTextBox.Text += url + "\r\n";
  28. try
  29. {
  30. await DoDownloadAsync(url);
  31. }
  32. catch (WebException webExcp)
  33. {
  34. dataTextBox.Text += webExcp.Message.ToString();
  35. }
  36. }
  37. }
  38. async Task DoDownloadAsync(string url)
  39. {
  40. var req = (HttpWebRequest)WebRequest.Create(url);
  41. req.Method = "GET";
  42. var task = req.GetResponseAsync();
  43. var resp = (HttpWebResponse)await task;
  44. dataTextBox.Text += resp.Headers.ToString();
  45. // dataTextBox.Text += "Async download completed";
  46. }
  47. }
  48. }

Решение задачи: «Почему код выполняется синхронно?»

textual
Листинг программы
  1. private async void GetButtonClick(object sender, RoutedEventArgs e)
  2. {
  3.     var urls = new List<string>
  4.             {
  5.                 "http://msdn.microsoft.com",
  6.                 "http://google.com",
  7.                 "http://tumblr.com",
  8.                 "http://bing.com",
  9.                 "http://yandex.ru",
  10.                 "http://dfbfgnbdsgv.com",
  11.                 "http://ya.ru"
  12.             };
  13.     var tasks = Task.WhenAll(urls.Select(DoDownloadAsync).ToList());
  14.     try
  15.     {
  16.         await tasks;
  17.     }
  18.     catch
  19.     {
  20.         dataTextBox.Text += string.Join(", ", tasks.Exception.Flatten().InnerExceptions.Select(ex => ex.Message));
  21.     }
  22. }

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


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

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

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

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

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

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