WebClient.DownloadFileAsync:有许多文件下载

时间:2008-11-20 04:00:25

标签: c# webclient download

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

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

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

我推得太多了吗?但话说回来,不应该发出错误吗?

1 个答案:

答案 0 :(得分: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");
        }
    }
}

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