下载并循环显示图片

时间:2015-02-10 00:12:04

标签: c# wpf

我有一张图片链接列表。现在我想遍历列表并为每个链接下载图片并在此之后立即显示在Image中。我的代码

private void bDownload_Click(object sender, RoutedEventArgs e)
    {
        string typedUrls = tbLinks.Text;
        string source = getPageSource(typedUrls);
        List<String> links = ExtractLinks(source);
        string threadID = getThreadID(typedUrls);


        for (int i = 0; i < links.Count; i++)
        {
            string path = downloadPic(links.ElementAt(i), threadID);
            showPicture(path);
        }
    }

private void showPicture(string path)
    {
        var uri = new Uri(path);
        iLatest.Source = new BitmapImage(uri);
    }

当我运行它时会下载图片,但只显示最后一张图片。如何管理?

1 个答案:

答案 0 :(得分:1)

你的循环同步运行:

   //A synchronous (not asynchronous) loop!
   for (int i = 0; i < links.Count; i++)
    {
        string path = downloadPic(links.ElementAt(i), threadID);
        showPicture(path);
    }

这意味着用户界面没有机会在下载图像时显示图像。在最后返回控件时,更新,显示最后一张图片。

如果要在下载时显示每个图像,则需要将下载移至另一个线程或async方法。

如果你想在之后循环浏览每个图像,那么你只需要一个循环通过图像集的定时器和代码。