WebClient.DownloadFileAsync и выполнение действий в основном потоке после загрузки - C#
Формулировка задачи:
Здравствуйте, поставлена простая задача - скачать ZIP-архив, а после закачки распаковать его.
Качаю с помощью WebClient.DownloadFileAsync. Всё прекрасно качается, форма не виснет, полосочка прогресса заполняется. Далее я хочу выполнять действия со скачанным архивом в
В итоге вставляю распаковку в событие DownloadFileCompleted. Но заметил, что код в этом событии выполняется тоже в отдельном потоке, а мне надо в главном.
Как бы так извернуться, что бы дождаться завершения асинхронной закачки, а потом в главном потоке уже работать с полученным архивом?
главном
потоке. Закачка
Листинг программы
- WebClient wb = new WebClient();
- wb.DownloadFileCompleted += wb_DownloadFileCompleted;
- wb.DownloadProgressChanged += wb_DownloadProgressChanged;
- wb.DownloadFileAsync(new Uri("http://site.ru/file.zip"), @"C:\file.zip");
- //Если я сразу же сюда вставлю код распаковывания, то будет исключение, потому что код запустится параллельно с закачкой, а архив ещё будет качаться.
Решение задачи: «WebClient.DownloadFileAsync и выполнение действий в основном потоке после загрузки»
textual
Листинг программы
- while (wb.IsBusy) { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д