下载文件任务异步 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;
}
任何帮助将不胜感激。
您的代码始终下载索引网页。
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");
为我工作