【发布时间】:2011-04-02 16:27:31
【问题描述】:
我想在专用于下载的单独线程中从我的 Delphi 程序下载文件。
问题是主程序可以随时关闭(因此下载线程也可以随时终止)。因此,即使没有连接或服务器延迟了宝贵的几秒钟,我也需要一种方法在一两秒内终止下载线程。
你们推荐使用什么功能?
我已经尝试过 InterOpenURL/InternetReadFile,但它没有超时参数。它确实有一个异步版本,但我找不到任何可用的 Delphi 示例,我不确定异步版本是否会保护我免于挂起......
之前有人推荐过使用socket,但是TClientSocket好像也没有超时功能。
我需要做好充分准备,这样如果用户在他/她的计算机上出现互联网连接问题或网络服务器一直滞后,我的应用程序在关闭前不会挂起。
在回答我不想使用任何第三方组件或 Indy 时请记住。非常感谢任何示例代码。
谢谢!
【问题讨论】:
-
InternetReadFile可以在循环中调用任意数量的字节。如果您将此与线程中的 Terminated 检查结合使用,则在关闭应用程序时将线程标记为终止并等待线程终止,您不应该有任何“挂起”。
标签: multithreading delphi download delphi-7 wininet