「ContextSwitchDeadlock が検出されました。」の対策

ContextSwitchDeadlock が検出されました。
Message: CLR は、COM コンテキスト 0xXXXXXX から COM コンテキスト 0xXXXXXX へ 60 秒で移行できませんでした。ターゲット コンテキストおよびアパートメントを所有するスレッドが、ポンプしない待機を行っているか、Windows のメッセージを表示しないで非常に長い実行操作を処理しているかのどちらかです。この状態は通常、パフォーマンスを低下させたり、アプリケーションが応答していない状態および増え続けるメモリ使用を導く可能性があります。この問題を回避するには、すべての Single Thread Apartment (STA) のスレッドが、CoWaitForMultipleHandles のようなポンプする待機プリミティブを使用するか、長い実行操作中に定期的にメッセージをポンプしなければなりません。

この例外はデバッグ中にしか出ない例外らしく、とりあえず無視しときゃ良いらしい(「続行」を押せば良い)。
出ないようにするには、
[デバッグ] メニューの [例外] で表示されるダイアログで [Managed Debuggin Assistants] の [ContextSwitchDeadlock] のチェックを外す。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください