当断开互联网连接时,URLDownloadToFile()会永久挂起

时间:2014-03-25 20:05:45

标签: windows internet-explorer windows-7 mfc urlmon

我使用URLDownloadToFile()为我的游戏下载更新文件。该函数是同步的,所以我让它在一个单独的线程中运行,我使用IBindStatusCallback(特别是onProgress()函数)来处理进度条和取消。它似乎工作得很好。

现在我正在处理超时机制,以便下载在挂起时取消。因此,在测试期间,我认为我会通过断开互联网来中断下载。当我这样做时,下载完全冻结,似乎永远。 URLDownloadToFile永远不会返回。更糟糕的是,IBindStatusCallback :: onProgress()函数再也没有被调用过。这意味着我无法告诉流程取消。

如果恢复了连接,有时下载会恢复,但有时候它不会恢复,只会永远坐在那里。

这让我觉得我不应该首先使用这种技术,但除了这个问题之外,它只是如此简单和实用。有没有解决这个问题的方法?

我正在使用Windows 7进行开发,而且我在谷歌搜索时已经阅读过这个问题可能会出现在某些版本的Windows上但不适用于其他版本...

编辑:可能值得一提的是,此功能包含在Internet Explorer平台API的URL Moniker集中(在Urlmon.lib中)。可能的API或命令中有一些单独的功能可用于取消下载或以其他方式解决问题。

0 个答案:

没有答案