3

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

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

如果连接恢复,有时下载会恢复,但有时它不会,并且会永远存在。

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

我正在 Windows 7 上开发,我在谷歌搜索时读到这个问题可能会出现在某些版本的 Windows 上,但不会出现在其他版本上......

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

4

0 回答 0