如何从DownloadDataAsync中检索参数?

时间:2014-01-14 13:58:50

标签: c# asp.net wpf webclient

在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
        }
    }

1 个答案:

答案 0 :(得分:3)

它位于UserState参数的DownloadDataCompletedEventArgs属性中:

private void ImageDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
{
    if (!e.Cancelled && e.Error == null)
    {
        var url = (string)e.UserState;
        ...
    }
}