我有一个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异步完成其任务。
答案 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