Почему код выполняется синхронно? - C#
Формулировка задачи:
Всем привет! Это мое первое сообщение на форме, первая попытка подружиться с .net и соответственно первый блин
Подскажите пожалуйста, почему этот код выполняется синхронно и главное как его заставить выполниться асинхронно.
Спасибо!
Листинг программы
- using System.Windows;
- using System.Net;
- using System.Threading.Tasks;
- using System.Collections.Generic;
- namespace AsyncFetch
- {
- public partial class MainWindow
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- private async void GetButtonClick(object sender, RoutedEventArgs e)
- {
- var urls = new List<string>
- {
- "http://msdn.microsoft.com",
- "http://google.com",
- "http://tumblr.com",
- "http://bing.com",
- "http://yandex.ru",
- "http://dfbfgnbdsgv.com",
- "http://ya.ru"
- };
- foreach (string url in urls)
- {
- dataTextBox.Text += url + "\r\n";
- try
- {
- await DoDownloadAsync(url);
- }
- catch (WebException webExcp)
- {
- dataTextBox.Text += webExcp.Message.ToString();
- }
- }
- }
- async Task DoDownloadAsync(string url)
- {
- var req = (HttpWebRequest)WebRequest.Create(url);
- req.Method = "GET";
- var task = req.GetResponseAsync();
- var resp = (HttpWebResponse)await task;
- dataTextBox.Text += resp.Headers.ToString();
- // dataTextBox.Text += "Async download completed";
- }
- }
- }
Решение задачи: «Почему код выполняется синхронно?»
textual
Листинг программы
- private async void GetButtonClick(object sender, RoutedEventArgs e)
- {
- var urls = new List<string>
- {
- "http://msdn.microsoft.com",
- "http://google.com",
- "http://tumblr.com",
- "http://bing.com",
- "http://yandex.ru",
- "http://dfbfgnbdsgv.com",
- "http://ya.ru"
- };
- var tasks = Task.WhenAll(urls.Select(DoDownloadAsync).ToList());
- try
- {
- await tasks;
- }
- catch
- {
- dataTextBox.Text += string.Join(", ", tasks.Exception.Flatten().InnerExceptions.Select(ex => ex.Message));
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д