Я хочу загрузить файл из своей программы Delphi в отдельный поток, посвященный загрузке.Загрузка файла из Интернета при возможности отменить загрузку в любое время
Проблема в том, что основная программа может быть закрыта в любое время (таким образом, поток загрузки также может быть прерван в любое время). Так что даже если нет соединения или сервер лагов за драгоценные секунды, мне нужен способ завершить поток загрузки в течение секунды или двух.
Какую функцию вы особенно рекомендуете?
Я экспериментировал с InterOpenURL/InternetReadFile, но у него нет параметра тайм-аута. У него есть асинхронная версия, но я не могу найти какие-либо рабочие примеры Delphi, и я не уверен, что асинхронная версия защитит меня от зависаний ...
Использование сокетов было рекомендовано мне раньше, но TClientSocket doesn Кажется, у вас тоже есть функция тайм-аута.
Мне нужно быть полностью подготовленным, так что если у пользователя возникают проблемы с подключением к Интернету на его/ее компьютере или веб-сервер сохраняет отставание, мое приложение не зависает перед закрытием.
Пожалуйста, имейте в виду, что я не хочу использовать ни сторонние компоненты, ни Indy. Любой примерный код очень ценится.
Спасибо!
Параметр 'InternetReadFile' можно назвать с произвольным количеством байтов, которые будут извлекаться в цикле. Если вы объедините это с завершенной проверкой в своем потоке, отметьте поток для завершения при закрытии приложения и дождитесь окончания потока, у вас не должно быть никаких «зависаний». –