我正在使用WebClient的DownloadFileAsync(在C#中)方法异步下载文件。我有事件处理程序附加到DownloadProgressChanged和DownloadFileCompleted事件。我希望通过DownloadFileCompleted事件处理程序中的AsyncCompletedEventArgs的Error属性收到任何错误的通知。如果在下载开始之前没有连接,它可以很好地工作。它错误地解决了,我在上面提到的属性中得到了错误。但是如果在下载过程中连接断开,则不会发生任何事情。事件处理程序未被调用,它会一直等待。我该怎么办才能处理这种情况? 感谢。
答案 0 :(得分:7)
执行您所要求的最佳方式可能是实现您自己的通话超时。
基本上,创建一个每次触发DownloadProgressChanged事件时都会重置的计时器。这样,如果您在超时期限内没有获得任何进度更新,您可以在WebClient上调用CancelAsync命令,这样您就不会永远等待。
这是我能够做到的唯一方法。