Странная постановка задачи.
Зависает скорее не сохранение, а загрузка файла. Не может файл скачиваться быстрее, чем записываться на локальный диск. Скачку и сохранение надо делать в отдельном потоке с информированием формы через SendMessage. Типа TDownloader.Create('http://example.com/file.zip', 'C:\file.zip', frmMain.Handle). Объект TDownloader в процессе шлет форме сообщения о прогрессе, в случае ошибки и при завершении загрузки.
Цитата:
Тебе надо в цикле проверять завершение потока, попустно делая Application.ProcessMessages, чтобы GUI не зависало. Заюзай TEvent.
|
Зачем делать новый поток, если основной поток будет в цикле ждать его завершения? При вызове Application.ProcessMessages форма конечно будет перерисовываться, и кнопки будут нажиматься, но по-моему так делать не стоит.