Почему код выполняется синхронно? - 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)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д