如何触发一个事件,该事件显示DownloadFileAsync

时间:2018-08-08 04:29:01

标签: c# webclient

我有一个URL集合列表,用于从服务器下载文件。

foreach (var category in jsonCollection.Categories)
{
    lblFileName.Text = category.File_name; //Here i want to show a message which file is downloading
    Thread thread = new Thread(() => {
        WebClient client = new WebClient();
        client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
        client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
        client.DownloadFileAsync(new Uri(category.Url), @"G:\\PROJECT\\BCCP\\file_name");
    });
    thread.Start();
}

我知道在完成每个下载的文件后,将调用DownloadFileCompleted处理程序。但是我需要一个事件,该事件将在文件下载期间触发,以便我可以显示一条消息,说明正在下载哪个文件。在这里,循环仅完成循环,然后DownloadFileAsync异步完成其任务。

2 个答案:

答案 0 :(得分:1)

使用等待关键字。在异步方法中将await运算符应用于任务,以便在该方法的执行中插入一个暂停点,直到等待的任务完成为止。

await client.DownloadFileTaskAsync(new Uri("download_url"), "location_url_where_do_you_want_to_download");
//Do anything what do you want...

必须在函数名称之前添加async关键字。

答案 1 :(得分:0)

我找到了解决方案。使用await关键字,使函数异步并使用DownloadFileTaskAsync

/path/mark/?gender=male