Как остановить текущую загрузку в vc

В моем приложении мы можем загружать загружаемые файлы на сервер. Для этого я использую WININET. Я хочу остановить процесс загрузки, когда пользователь нажимает на Stop кнопка. Теперь, если пользователь нажимает на stop Кнопка текущего процесса не остановит загрузку. Как я могу отказать файлу в загрузке.

0

Решение

Если вы используете WININET, вы должны разместить файл в несколько небольших кусков. Если используются нажатия «Отмена», вам нужно установить переменную, чтобы прервать загрузку. Это нужно проверять после каждой небольшой загрузки …
Полный пример разделения загрузок на более мелкие части можно найти здесь:
http://support.microsoft.com/kb/177188/en-us
Вам необходимо скачать файл «hsrex.exe», а затем открыть его с помощью WinZip или 7-zip и извлечь файл «BigPost.cpp». Также я могу выложить код здесь, если хотите …

3

Другие решения

попробуй функцию CHttpFile :: EndRequest () …

Другая идея, попытаться прекратить работу потока для операции загрузки

1

Во-первых, вам нужно выполнить работу с WinInet в рабочем потоке, чтобы освободить пользовательский интерфейс, чтобы нажать кнопку «Отмена». Когда пользователь нажимает кнопку Отмена, ваш поток пользовательского интерфейса должен закрыть дескриптор, используемый WinInet для загрузки фрагментов файла. Это приводит к тому, что WinInet немедленно прерывает любой чанк загрузки, который в данный момент выполняется. Чтобы аккуратно выйти из рабочего потока в этот момент, поток пользовательского интерфейса должен установить флаг bool ‘done’, который рабочий поток читает, и, если он установлен, рабочий поток выходит из цикла, а не зацикливается для загрузки другого фрагмента.

0
По вопросам рекламы [email protected]