我有一个代码,其中有4个后台工作程序正在从数据库中获取图像URL。每个数据库都有一个foreach循环,可将数据库结果存储到列表中。然后使用此代码在运行时创建图像。
this.Bitmap = new BitmapImage(new Uri( -URL- , UriKind.Absolute));
Bitmap.DownloadCompleted += new EventHandler( -Event Below- );
该事件检查其上是否有任何图像(因为始终有图像,但如果链接无效则为空),如果没有则打印“无图像”文本。
if (((BitmapImage)sender).Width > 1)
this.AddChild(Image);
else
this.AddChild(new TextBlock() { Text = "No Image Available" });
这种方式适用于我的模拟清单。但是,当我有一个较长的查询并花费更多时间来运行时,就会出现问题。因此,某些图像丢失了,并且在它们上没有生成文本。但是有些还可以,并且效果很好。如果读者是我的问题,这也是我的sqlHandler类。
MySqlDataReader reader = mySqlCommand.ExecuteReader();
{
while(reader.Read())
//Get stuff
...
这是后台工作程序doWork方法:
this.Dispatcher.Invoke(() =>
{
foreach (Book book in list)
{
if (book != null)
wrapPopular.Children.Add(new object_that_generates_the_bitmap);
}
});
我猜这是一个线程问题,但我不知道如何解决。