我有一张图片链接列表。现在我想遍历列表并为每个链接下载图片并在此之后立即显示在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);
}
当我运行它时会下载图片,但只显示最后一张图片。如何管理?
答案 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
方法。
如果你想在之后循环浏览每个图像,那么你只需要一个循环通过图像集的定时器和代码。