WPF レンダリング スレッドがハングする 質問する

WPF レンダリング スレッドがハングする 質問する

WPF アプリで、レンダリング スレッドがレンダリングを停止しているのに、UI スレッドとヘルパー スレッドが引き続きメッセージを送信しているという問題が発生しています。

これはプレゼンテーション フォント キャッシュの破損に関連しているようですが、再起動するとアプリが正常に回復するため、この可能性は低いようです。

レンダリング スレッドが時々ハングして描画の更新が妨げられますが、UI スレッドは引き続きメッセージを送信し続けます。

同様の問題(ここ) は、テキスト ブロックにスケール変換を適用したときに発生しましたが、フォント キャッシュを削除することで解決されました。ただし、この特定の問題は確実に再現できるものではありません。

この問題の根本原因を診断する最善の方法は何ですか?

私はマイクロソフトにバグを報告しました接続するただし、他の人が投票しない限り、検討されません。

ベストアンサー1

フリーズの原因は、ホストされた ActiveX コントロールによるビデオのレンダリングでした。

コントロールが DirectShow を使用する方法に競合状態があり、DirectX がハングしました。

この問題は、プロセスダンプを取得することで発見されました。プロシージャダンプそして、ダンプファイルをWindowsで開きますデバッガ

狩りをするネットネイティブ コールスタックを検査すると、クリティカル セクション ポインターの上位バイトがゼロになっているという問題が見つかりました。これは、スレッドの 1 つが、シグナルを送ることのできない存在しないクリティカル セクションを待機していたことを意味します。

これにより、ビデオを開始および停止するコードを実行して、繰り返しハングアップを発生させることができました。コントロールを削除すると、ハングアップは停止しました。

おすすめ記事