Pages

2014/02/28

[C#] ContextSwitchDeadlock の例外

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

長いメッセージだ。
Windows Form で長い処理を行っている間に、このようなメッセージが表示されることがある。
メッセージを出なくさせるには、ContextSwitchDeadlock の例外が出ても中断させないように設定すればよい (問題が解決したわけではないので、なんらかの対処は必要だろうが……)。

  1. デバッグ -> 例外 (Ctrl + D, E)
  2. Managed Debugging Assistants, ContextSwitchDeadlock のチェックをオフにする。
Related Posts Plugin for WordPress, Blogger...