【问题标题】:detecting connection drops while WebClient is downloading a file asynchronously (in C#)在 WebClient 异步下载文件时检测连接断开(在 C# 中)
【发布时间】:2011-01-20 09:45:30
【问题描述】:

我正在使用 WebClient 的 DownloadFileAsync(在 C# 中)方法来异步下载文件。我将事件处理程序附加到 DownloadProgressChanged 和 DownloadFileCompleted 事件。我希望通过 DownloadFileCompleted 事件处理程序中的 AsyncCompletedEventArgs 的 Error 属性获得任何错误的通知。如果在下载开始之前连接不存在,它会很好地工作。它出现了适当的错误,我在上面提到的属性中得到了错误。但是,如果在下载过程中连接断开,则不会发生任何事情。事件处理程序没有被调用,它一直在等待。我应该怎么做才能处理这种情况? 谢谢。

【问题讨论】:

  • 你能创建一个 system.net 跟踪日志吗?请参阅ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html 了解如何执行此操作。并在 pastebin.com 上发布日志,并将日志链接放在这里。我们可以看看。从表面上看,这听起来像是一个错误,但日志文件将有助于调试。

标签: c# asynchronous download webclient


【解决方案1】:

执行您所要求的最佳方法可能是实现您自己的呼叫超时。

基本上,创建一个每次触发 DownloadProgressChanged 事件时都会重置的计时器。这样,如果您在超时期限内没有收到任何进度更新,您可以在 WebClient 上调用 CancelAsync 命令,这样您就不会永远等待。

这是我能够做到的唯一方法。

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多