Задать вопрос

Почему программа не отвечает во время скачивания методом WebClient?

Есть программа, вроде апдейтера, смысл очень прост: программа скачивает архив с файлами и в последствии разархивирует его в обозначенную папку. Но почему при выполнении скачивания архива программа не отвечает, но отвисает после завершения загрузки?
string remoteUri = "http://example.xyz/up/";
            string fileName = "new.zip", myStringWebResource = null;
            // Create a new WebClient instance.
            WebClient myWebClient = new WebClient();
            myWebClient.DownloadProgressChanged += (s, e) =>
            {
                progressBar.Value = e.ProgressPercentage;
            };
            myWebClient.DownloadFileCompleted += (s, e) =>
            {
                progressBar.Visible = false;
            };

            // Concatenate the domain with the Web resource filename.
            myStringWebResource = remoteUri + fileName;
            // Download the Web resource and save it into the current filesystem folder.
            myWebClient.DownloadFile(myStringWebResource, fileName);
            Complete();
            string usr = SystemInformation.UserName;
            DirectoryInfo di = new DirectoryInfo(path);

            foreach (FileInfo file in di.GetFiles())
            {
                file.Delete();
            }
            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                dir.Delete(true);
            }
            string zipPath = @"new.zip";
            string extractPath = @path;
            ZipFile.ExtractToDirectory(zipPath, extractPath);

            File.Delete("new.zip");
  • Вопрос задан
  • 278 просмотров
Подписаться 2 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
Очевидно потому, что вы вызываете синхронный метод скачивания (DownloadFile), и он вешает event loop до момета завершения загрузки. Асинхронно качать не пробовали?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы