下载文件任务异步 C#

本文关键字:异步 任务 文件 下载 | 更新日期: 2023-09-27 18:30:17

>我正在尝试创建一个小程序来下载给定链接的文件。

我遇到的问题是以下几点...当我下载像 *.htm 、*.txt 这样的文件时,没有问题,但是当我尝试获取更大的文件时,如 *.zip、*.bmp我的程序只下载 2kb-7kb 之间。

我也尝试使用 localhost,因为我认为某些网站中的外部查询可能存在一些安全限制,但事实是一样的。[我知道我现在组织主文件中代码的方式远非正确,但就像我说的,这只是一个测试]

我的代码:

    static DateTime lastUpdate;
    static long lastBytes = 0;
    static void Main()
    {
        MyTask();
        Console.ReadKey();
    }
    async static Task MyTask()
    {
        var wc = new WebClient();
        wc.DownloadProgressChanged += (sender, args) =>
            {
                Console.WriteLine("{0} - {1} % complete", ProgressChanged(args.BytesReceived), args.ProgressPercentage);
            };
        Task.Delay(150000).ContinueWith(ant =>
            {
                wc.CancelAsync();
                Console.WriteLine("ABORTED!");
            });
        //http://windows.php.net/downloads/releases/php-5.5.3-nts-Win32-VC11-x86.zip
        //await wc.DownloadFileTaskAsync("http://localhost/", "w-brand.png");
        //await wc.DownloadFileTaskAsync("http://oreilly.com", "webpage.htm");
        await wc.DownloadFileTaskAsync("http://windows.php.net/downloads/releases/", "php-5.5.3-nts-Win32-VC11-x86.zip");
    }
    static long ProgressChanged(long bytes)
    {
        if (lastBytes == 0)
        {
            lastUpdate = DateTime.Now;
            lastBytes = bytes;
            return 0;
        }
        var now = DateTime.Now;
        var timeSpan = now - lastUpdate;
        var bytesChange = bytes - lastBytes;
        var bytesPerSecond = timeSpan.Seconds != 0 ? bytesChange / timeSpan.Seconds : 0;
        lastBytes = bytes;
        lastUpdate = now;
        return bytesPerSecond;
    }

任何帮助将不胜感激。

下载文件任务异步 C#

您的代码始终下载索引网页。

DownloadFileTaskAsync 的第一个参数是 Web URL,第二个参数是存储文件的本地路径。

wc.DownloadFileTaskAsync("http://windows.php.net/downloads/releases/php-5.5.3-nts-Win32-VC11-x86.zip", @"c:'php-5.5.3-nts-Win32-VC11-x86.zip");

为我工作