WebClient.DownloadFileAsync и выполнение действий в основном потоке после загрузки - C#

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

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

Здравствуйте, поставлена простая задача - скачать ZIP-архив, а после закачки распаковать его. Качаю с помощью WebClient.DownloadFileAsync. Всё прекрасно качается, форма не виснет, полосочка прогресса заполняется. Далее я хочу выполнять действия со скачанным архивом в

главном

потоке. Закачка
WebClient wb = new WebClient();
wb.DownloadFileCompleted += wb_DownloadFileCompleted;
wb.DownloadProgressChanged += wb_DownloadProgressChanged;
wb.DownloadFileAsync(new Uri("http://site.ru/file.zip"), @"C:\file.zip");
//Если я сразу же сюда вставлю код распаковывания, то будет исключение, потому что код запустится параллельно с закачкой, а архив ещё будет качаться.
В итоге вставляю распаковку в событие DownloadFileCompleted. Но заметил, что код в этом событии выполняется тоже в отдельном потоке, а мне надо в главном. Как бы так извернуться, что бы дождаться завершения асинхронной закачки, а потом в главном потоке уже работать с полученным архивом?

Решение задачи: «WebClient.DownloadFileAsync и выполнение действий в основном потоке после загрузки»

textual
Листинг программы
while (wb.IsBusy) { }

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


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

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

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