##前提
言語:C# WPF
環境:VS2019
MVVMに則っています。
##悩んでいる事
最近使用したファイル一覧を表示しようとしています。
方法としては簡単で、RecentフォルダをFileSystemWatcherで非同期に監視するだけです。
なので処理の流れとして、以下の様になります。
アプリケーションを立ち上げる
↓
何かしらのファイルを起動する
↓
Recentフォルダにファイルが追加される
↓
Recentフォルダに変更が加わった事を検知して、ファイル名・ファイルパス・アイコンを取得して一覧に表示する
一覧に表示させる際に、ファイルの持っているアイコンも表示させようとしていますが
MVVMのVM、またはMで作成したアイコンをVMのObservableCollectionに追加した際に、以下のようなエラーが表示されてしまいます。
System.Windows.Markup.XamlParseException: 'DependencySource は、DependencyObject と同じ Thread 上で作成する必要があります。'
非同期処理内での処理なので、UIスレッドに処理がない事はわかっています。
また、VMやMにはWindowBaseを継承していないため、InvokeAsync なども使用できません。
この状況で、どうやってUIスレッドと同期をとることができるのでしょうか?
コレクションであれば、以下のメソッドを使用すれば別スレッドからのコレクションの変更を同期させられます。
BindingOperations.EnableCollectionSynchronization()
どのようにすれば、MVVMに則ってアイコンの画像を取得できるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/27 09:03