小编Dom*_*Dom的帖子

使用 DownloadFileTaskAsync 一次下载所有文件

给定一个包含 Urls 的输入文本文件,我想一次下载相应的文件。我使用这个问题UserState的答案 使用 WebClient 和 TaskAsync 从 Async CTP 下载作为参考。

public void Run()
{
    List<string> urls = File.ReadAllLines(@"c:/temp/Input/input.txt").ToList();

    int index = 0;
    Task[] tasks = new Task[urls.Count()];
    foreach (string url in urls)
    {
        WebClient wc = new WebClient();
        string path = string.Format("{0}image-{1}.jpg", @"c:/temp/Output/", index+1);
        Task downloadTask = wc.DownloadFileTaskAsync(new Uri(url), path);
        Task outputTask = downloadTask.ContinueWith(t => Output(path));
        tasks[index] = outputTask;
    }
    Console.WriteLine("Start now");
    Task.WhenAll(tasks);
    Console.WriteLine("Done");

}

public void Output(string path)
{
    Console.WriteLine(path);
}
Run Code Online (Sandbox Code Playgroud)

我预计文件的下载将在“Task.WhenAll(tasks)”点开始。但事实证明,输出看起来像

c:/temp/Output/image-2.jpg
c:/temp/Output/image-1.jpg
c:/temp/Output/image-4.jpg …

c# webclient task

4
推荐指数
1
解决办法
6792
查看次数

标签 统计

c# ×1

task ×1

webclient ×1