none
Завершить работу с файлом... RRS feed

  • Вопрос

  • Подскажите как мне освободить файл после скачивания!!!

    Есть код

    WebClient webClient = new WebClient();
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
                webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webClient.DownloadFileAsync(new Uri("откуда"), "куда");

    После скачивания мне надо сразу же распаковать архив. Но не получается. Выдает исключение что файл занят другой программой...

    Вот код распаковки архива...

    if (ZipFile.IsZipFile(path))//Проверка - действительно ли это Архив.
                {
                    ZipFile zf = new ZipFile(path);
                    zf.ExtractAll(ExtractAll);
                    return true;
                }
                else
                {
                    return false;
                }
    Подскажите пожалуйста как мне распаковать архив сразу же после скачивания...

    5 октября 2015 г. 13:03

Ответы

  • По идее скачанный файл не должен ничем быть занят, нет нужды, что либо делать. Может там у вас антивирус сканирует его или ещё что. Где вы код выполняете?

    Сделаем содержимое сообщества лучше, вместе!

    По идее не должен и у меня он файл отпускает после скачивания... 

    if (ZipFile.IsZipFile(path))//Проверка - действительно ли это Архив.

    Я такого метода в доках не нашел - это собственное расширение? может оно и держит файл? 

    • Помечено в качестве ответа motokraft 7 октября 2015 г. 10:25
    6 октября 2015 г. 13:15

Все ответы

  • Необходимо вызвать метод webClient.Dispose() после завершения загрузки файла.
    5 октября 2015 г. 13:31
  • Необходимо вызвать метод webClient.Dispose() после завершения загрузки файла.

    пробовал уже. Все равно не работает...

    Но может не там вставлял...

    private void Completed(object sender, AsyncCompletedEventArgs e)
            {
               webClient.Dispose();
                if (ZipFile.IsZipFile(path))//Проверка - действительно ли это Архив.
                {
                    ZipFile zf = new ZipFile(path);
                    zf.ExtractAll(ExtractAll);
                    return true;
                }
                else
                {
                    return false;
                }
            }

    Вставил в событие 

    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
    которое происходит после завершения асинхронной операции по загрузке файла...


    • Изменено motokraft 5 октября 2015 г. 15:11
    5 октября 2015 г. 15:10
  • По идее скачанный файл не должен ничем быть занят, нет нужды, что либо делать. Может там у вас антивирус сканирует его или ещё что. Где вы код выполняете?

    Сделаем содержимое сообщества лучше, вместе!

    6 октября 2015 г. 4:50
    Модератор
  • Где вы код выполняете?
    Всмысле где???? я использую WinForm на языке C#
    6 октября 2015 г. 8:59
  • По идее скачанный файл не должен ничем быть занят, нет нужды, что либо делать. Может там у вас антивирус сканирует его или ещё что. Где вы код выполняете?

    Сделаем содержимое сообщества лучше, вместе!

    По идее не должен и у меня он файл отпускает после скачивания... 

    if (ZipFile.IsZipFile(path))//Проверка - действительно ли это Архив.

    Я такого метода в доках не нашел - это собственное расширение? может оно и держит файл? 

    • Помечено в качестве ответа motokraft 7 октября 2015 г. 10:25
    6 октября 2015 г. 13:15