在WPF应用程序中使用WebClient时,如果正确下载了一个事件,则以下代码可以正常工作。
我需要将一些参数传递给ImageDownloadCompleted
,以便明确知道刚下载了哪个图像。
使用webClient.DownloadDataAsync(new Uri(url), url);
我无法获得想要的结果。
我在这里做错了什么?
PS:基本上我会使用这些参数在数组中对图像进行排序。如果这是另一种方法,请告诉我。
private void DownloadAndPrintImagesAsync(IEnumerable<string> urls)
{
foreach (var url in urls)
{
var webClient = new WebClient();
webClient.DownloadDataCompleted += ImageDownloadCompleted;
webClient.DownloadDataAsync(new Uri(url), url); // I want to pass url
}
}
private void ImageDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
{
if (!e.Cancelled && e.Error == null)
{
// I need to get url here
}
}
答案 0 :(得分:3)
它位于UserState
参数的DownloadDataCompletedEventArgs
属性中:
private void ImageDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
{
if (!e.Cancelled && e.Error == null)
{
var url = (string)e.UserState;
...
}
}