Почему код выполняется синхронно? - 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));
    }
}

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


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

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

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