.NET 4.x Webclient, асинхронная загрузка - C#
Формулировка задачи:
Добрый вечер. В своей программе в main я вызываю функцию LoadFile, которая загружает файл и выполняет ее последующую распаковку. Дальше, в этом же main, я запускаю распакованную программу:
При этом происходит так, что один из потоков идет дальше, до окончания загрузки файла: минуя распаковку и запуская еще не распакованный файл. Можно как-нибудь отследить завершение всех потоков загрузки до того, как выполнять следующий код?
ПС: если нужен будет весь код, скину - обычная программа для обновления и запуска tMorph для WoW.
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(); }
Решение задачи: «.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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д