.NET 4.x Webclient, асинхронная загрузка - C#

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

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

Добрый вечер. В своей программе в main я вызываю функцию LoadFile, которая загружает файл и выполняет ее последующую распаковку. Дальше, в этом же main, я запускаю распакованную программу:
static void Loading_file ()
        {
            try
            {
                WebClient web = new WebClient();
                
                web.DownloadProgressChanged += (sender, e) =>
                {
                    // некий вывод процесса загрузки
                };
 
                web.DownloadFileCompleted += (sender, e) =>
                {
                    ExtractZIP();
                };
 
                web.DownloadFileAsync(new Uri(url));
            }
            catch (WebException ex)
            {
                Console.WriteLine(ex.ToString());
            }
 
static void Main(string[] args)
        {
            Loading_file();
            tMorph_load();
         }
При этом происходит так, что один из потоков идет дальше, до окончания загрузки файла: минуя распаковку и запуская еще не распакованный файл. Можно как-нибудь отследить завершение всех потоков загрузки до того, как выполнять следующий код? ПС: если нужен будет весь код, скину - обычная программа для обновления и запуска tMorph для WoW.

Решение задачи: «.NET 4.x Webclient, асинхронная загрузка»

textual
Листинг программы
static void Main(string[] args)
        {
            var task = new Task(async()=>await Loading_file());
            var tcw = task.ContinueWith(t=>
               {
                ExtractZIP();               
               },
             TaskContinuationOptions.OnlyOnRanToCompletion).ContinueWith(t2=>
               {
                 tMorph_load();
                },
              TaskContinuationOptions.OnlyOnRanToCompletion);
            
            try
            {
                task.Start();
             }
             catch(Aggregate exc)
             {
                 exc.Handle(x=> x is WebException);   
             }
             Console.ReadKey();
 }

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


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

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

7   голосов , оценка 3.714 из 5
Похожие ответы