WPF アプリで、レンダリング スレッドがレンダリングを停止しているのに、UI スレッドとヘルパー スレッドが引き続きメッセージを送信しているという問題が発生しています。
これはプレゼンテーション フォント キャッシュの破損に関連しているようですが、再起動するとアプリが正常に回復するため、この可能性は低いようです。
レンダリング スレッドが時々ハングして描画の更新が妨げられますが、UI スレッドは引き続きメッセージを送信し続けます。
同様の問題(ここ) は、テキスト ブロックにスケール変換を適用したときに発生しましたが、フォント キャッシュを削除することで解決されました。ただし、この特定の問題は確実に再現できるものではありません。
この問題の根本原因を診断する最善の方法は何ですか?
私はマイクロソフトにバグを報告しました接続するただし、他の人が投票しない限り、検討されません。
ベストアンサー1
フリーズの原因は、ホストされた ActiveX コントロールによるビデオのレンダリングでした。
コントロールが DirectShow を使用する方法に競合状態があり、DirectX がハングしました。
この問題は、プロセスダンプを取得することで発見されました。プロシージャダンプそして、ダンプファイルをWindowsで開きますデバッガ。
狩りをするネットネイティブ コールスタックを検査すると、クリティカル セクション ポインターの上位バイトがゼロになっているという問題が見つかりました。これは、スレッドの 1 つが、シグナルを送ることのできない存在しないクリティカル セクションを待機していたことを意味します。
これにより、ビデオを開始および停止するコードを実行して、繰り返しハングアップを発生させることができました。コントロールを削除すると、ハングアップは停止しました。