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