たくさんの画像を読み込んでサムネイルとして表示する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で、このオブジェクトは別のスレッドによって所有されていると示されています。
これらの問題を解決するにはどうすればよいですか?前もって感謝します!