バックグラウンド ワーカーを使用して、バックグラウンド スレッドでビューモデルからサービス モジュール呼び出しを呼び出しています。
サービス モジュール メソッドには、サービスが返されたときに呼び出されるアクション パラメータがあります。ここで、UI スレッドに戻ってアクションを呼び出す必要があります (サービス モジュールから呼び出されるビューモデル メソッドで UI スレッドに戻ることも試みました)。
だから私が試した問題の核心に
Application.Current.RootVisual.Dispatcher.BeginInvoke(() => code stuff here);
これにより、無効なクロス スレッド アクセスが生成されます (ここで rootvisual にアクセスできません)。
次に、以下のように別の方法で Dispatcher を取得しようとしました
Deployment.Current.Dispatcher.BeginInvoke() => code here);
また、アプリケーションの起動メソッドで設定した Dispatcher プロパティを持つ静的クラスを試し、それを使用して呼び出しを試みました。
Deployment ディスパッチャと静的クラスのディスパッチャを使用しても無効なクロス スレッド アクセスは生成されませんが、これらのディスパッチャによって呼び出されているコード内でブレークポイントを設定すると、このSystem.Threading.Thread. CurrentThread.ThreadState はバックグラウンドです
ただし、ビュー モデルでプロパティを更新することはできますが、ビューは実際に問題なく更新されますが、ここでまだ問題が発生しているかどうかを知りたいのですが、これは将来的に問題になるでしょう。