В моем приложении мы можем загружать загружаемые файлы на сервер. Для этого я использую WININET. Я хочу остановить процесс загрузки, когда пользователь нажимает на Stop
кнопка. Теперь, если пользователь нажимает на stop
Кнопка текущего процесса не остановит загрузку. Как я могу отказать файлу в загрузке.
Если вы используете WININET, вы должны разместить файл в несколько небольших кусков. Если используются нажатия «Отмена», вам нужно установить переменную, чтобы прервать загрузку. Это нужно проверять после каждой небольшой загрузки …
Полный пример разделения загрузок на более мелкие части можно найти здесь:
http://support.microsoft.com/kb/177188/en-us
Вам необходимо скачать файл «hsrex.exe», а затем открыть его с помощью WinZip или 7-zip и извлечь файл «BigPost.cpp». Также я могу выложить код здесь, если хотите …
попробуй функцию CHttpFile :: EndRequest () …
Другая идея, попытаться прекратить работу потока для операции загрузки
Во-первых, вам нужно выполнить работу с WinInet в рабочем потоке, чтобы освободить пользовательский интерфейс, чтобы нажать кнопку «Отмена». Когда пользователь нажимает кнопку Отмена, ваш поток пользовательского интерфейса должен закрыть дескриптор, используемый WinInet для загрузки фрагментов файла. Это приводит к тому, что WinInet немедленно прерывает любой чанк загрузки, который в данный момент выполняется. Чтобы аккуратно выйти из рабочего потока в этот момент, поток пользовательского интерфейса должен установить флаг bool ‘done’, который рабочий поток читает, и, если он установлен, рабочий поток выходит из цикла, а не зацикливается для загрузки другого фрагмента.