C# 如何触发显示DownloadFileAsync正在下载哪个文件的事件
我有一个从服务器下载文件的URL集合列表C# 如何触发显示DownloadFileAsync正在下载哪个文件的事件,c#,webclient,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 W
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处理程序将在完成下载的每个文件后调用。但我需要一个事件,将在文件下载期间激发,以便我可以显示一条消息哪个文件正在下载。在这里,循环只是完成循环,然后下载FileAsync异步完成其任务 我找到了解决办法。使用await关键字,使函数异步,并使用DownloadFileTaskAsync
private async void functionName()
{
foreach (var category in jsonCollection.Categories)
{
Thread thread = new Thread(() => {
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
await client.DownloadFileTaskAsync(new Uri(category.Url), @"G:\\PROJECT\\BCCP\\file_name");
//await for downloading
lblFileName.Text = category.File_name;
});
thread.Start();
}
}
使用wait关键字。等待运算符应用于异步方法中的任务,以在方法的执行中插入挂起点,直到等待的任务完成
await client.DownloadFileTaskAsync(new Uri("download_url"), "location_url_where_do_you_want_to_download");
//Do anything what do you want...
必须在函数名之前添加async关键字。为什么
DownloadProgressChanged
不能解决您的问题。@ErikPhilips谢谢您的评论。我没有想到这一点。我是新来的。那么哪一个更好呢?