我正在使用URLDownloadToFile()为我的游戏下载更新文件。 该函数是同步的,所以我有它在一个单独的线程中运行,并且我使用IBindStatusCallback(特别是onProgress()函数)来处理进度栏,并取消。 这似乎很好。
现在我正在处理超时机制,以便下载将挂起。 所以,在testing过程中,我认为我会通过断开互联网来中断下载。 当我这样做,下载完全冻结,似乎永远。 URLDownloadToFile永远不会返回。 更糟的是,IBindStatusCallback :: onProgress()函数不会再被调用。 这意味着我无法告诉过程取消。
如果连接恢复,有时候下载会恢复,但有时不会,只是永远坐在那里。
这使我觉得,我甚至不应该使用这种技术,但它只是非常简单和function,除了这个问题。 有没有办法解决这个问题?
我正在开发Windows 7,而且我一直在阅读谷歌search,这个问题可能会出现在Windows的某些版本,但不为其他人…
编辑:可能值得一提的是,这个函数是包含在URL Moniker的Internet Explorer平台API(在Urlmon.lib中)。 API或命令中可能有一些独立的function,可以用来取消下载或以其他方式解决问题。