ある種の PA システムで使用される複雑な WPF アプリケーションがあります。時々ビデオを表示し、画面上で音楽やさまざまなテキストメッセージを再生することもあります.
構造はかなり簡単です。2つのメソッドを持つサーバーがあります。SetMessage("文字列"); および GetMessage("文字列");
クライアントは 5 秒に 1 回、WCF の HTTP バインディングを介してサーバーに接続し、GetMessage() をプルします。管理アプリはサーバーに接続し、SetMessage() を呼び出します。
App.xml.cs には、CurrentDomain_UnhandledException、OnDispatcherUnhandledException、TaskScheduler.UnobservedTaskException、および application.Current.DispatcherUnhnandledException のハンドラーがあります。それらはすべて nlog を実行して操作を続行することを想定しています。
アプリには、Media 要素を使用して短いビデオを再生するページが 1 つあります。ビデオを再生した後、時々アプリがクラッシュします。
EventType : clr20r3
P1 : Client.exe
P2 : 0.0.2.0
P3 : 5226863e
P3 : mscorlib
P5 : 4.0.0.0
P6 : 4ba1da6f
P7 : 219
P8 : 10
P9 : system.invalidoperaionexception
これですべてクールです。それでも問題は次のとおりです。
- 4 つの異なる例外ハンドラーにもかかわらず、私はまだ例外を取得しています
- クライアント コンピューターでデバッグできません
- エラーはランダムですが、ビデオを再生した後に発生します。
- ビデオを停止および開始するコードは、Dispatcher.Invoke(new Action) にあります。
- ビデオを停止する前に、ページを離れて別のページに切り替えるだけかもしれません。
アクセスに違反していて、コード内の何かを別のスレッドから変更しようとしているようです。
面白いことに、ILDasm を実行しようとしたところ、P7:219 が見つかりましたが、コードには何もありません。
そのおかしな例外をキャッチする方法はありますか?
(私は実際にここで同様の問題を見つけようとして約 30 分を費やしましたが、すべてのソリューションは既に私のコードに適用されています)
助けてくれてありがとう。