1

私にはいくつかのプロジェクトがあり、それぞれにそれらを管理するための UserControl があります。すべてのプロジェクトが 1 つのソリューションで同時に機能します。すべての UserControls は TabControl にあります。しかし、1 つのプロジェクトが彼の例外を処理しない場合、すべてのソリューションが失敗します。各 UserControl を別の Thread で実行するにはどうすればよいですか?

私はいくつかのクラスを持っています。それらはMVVMのモデルです。それらのすべてに ViewModel と View があります。すべてのクラスが開始され、1 つのスレッドで動作するようになりました。いずれかが例外をスローすると、すべてのアプリが失敗します。すべてのモデルが個々のスレッドで動作することを望みます。ただし、taht モデルのすべてのビューは、TabControl にまとめられています。このシームを整理するにはどうすればよいですか?

4

1 に答える 1

3

できません。WPF には、ユーザー インターフェイス スレッドが 1 つだけあります。バックグラウンド スレッドからのユーザー インターフェイス要素の変更は機能せず、例外が発生します。(編集:これは完全に正しいわけではありません。明らかに、個々のウィンドウを独自のスレッドで開始すること可能です。)

キャッチされない例外に問題がある場合は、Application.DispatcherUnhandledException イベントを確認してください。これにより、完全な WPF アプリケーションの中央例外ハンドラーを登録できます。DispatcherUnhandledException ハンドラーの最後に設定e.Handled = true; すると、例外が発生すると、アプリケーションは終了せずにユーザー インターフェイスにフォールバックします。

詳しくは:

于 2013-06-26T15:34:19.837 に答える