我正在开发一个 C# WPF 应用程序,它加载大量图像并将其显示为缩略图。我想以多线程的方式来做。因此我尝试实现一个BackgroundWorker。
BackgroundWorker 的 DoWork() 的代码:
string[] files = e.Argument as string[];
foreach (string file in files)
{
ImageModel image = new ImageModel();
image.FilePath = file;
_importWorker.ReportProgress(1, image);
_imageCollectionVM.Images.Add(image); // also tried this one in ReportProgress()
}
在我的 XAML 代码中,我绑定到 ImageModel 的 BitmapImage 属性。(AsyncState=True 没有帮助。)在这里我得到这个错误:“DependencySource”和“DependencyObject”必须在同一个线程中。
<Image Source="{Binding BitmapImage}" />
如果我将此注释掉,则图像似乎已导入但我无法访问它,例如通过在 ListView 中选择它。在其 SelectionChanged 中,它说该对象由另一个线程拥有。
我该如何解决这些问题?提前致谢!