【问题标题】:WebClient.DownloadFileAsync: With many file downloadsWebClient.DownloadFileAsync:有很多文件下载
【发布时间】:2008-11-20 04:00:24
【问题描述】:

我正在使用 WebClient 类的多个实例,以便同时从 Internet 上的 Web 服务器异步下载许多小文件。
我使用的 URI 使用数字表示法的 IP,以避免不必要的 DNS 解析。

我正在推动它,例如使用同时有 50 多个类实例。

我注意到,尽管大多数文件都正确下载,但其中一小部分的长度为 0,这意味着该线程从未成功完成 -- 可能是由于错误。
但是AsyncCompletedEventArgs 从来没有报错。

我是不是太过分了?不过话说回来,不应该报错吗?

【问题讨论】:

  • 您有没有重现/演示错误的代码 sn-p?
  • Robert 是对的,如果没有样本让我们了解您如何处理异步请求,将很难回答。您只会收到猜测。
  • 抱歉,我以为你的答案又快又脏。我将重构我的代码,以便您尽快分析和发布。

标签: c# webclient download


【解决方案1】:

如果有人遇到这个真的老问题,最好的猜测是线程在下载完成之前就被杀死了,导致文件大小等于 0。

例如,让我们比较一下两者之间发生了什么

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            client.DownloadFileAsync(new Uri("http://ipv4.download.thinkbroadband.com/5MB.zip"), "C:\\5MB.zip");
            Thread.Sleep(30000);
        }
    }
}

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            client.DownloadFileAsync(new Uri("http://ipv4.download.thinkbroadband.com/5MB.zip"), "C:\\5MB.zip");
        }
    }
}

在第二种情况下,一旦开始下载,程序就会退出,导致下载中断,这表现为在 C: 驱动器上创建大小为 0 的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多