.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();
}