私は通常長い時間がかかる複雑な計算を実行するC#(.net 3.5 cp、vs2010)のクラスを持っています。1 分後、ContextSwitchDeadlock が検出されたという例外がスローされます。例外は英語以外の言語にローカライズされているため、コピーして貼り付けることはできませんが、意味は次のとおりです。 ¨ CLR モジュールは、コンテキスト COM ... からコンテキスト COM ... に 60 秒間遷移できませんでした。ターゲット コンテキスト/アパートメントを所有するサブプロセスは、おそらく非ポンピング待機を行っているか、Windows システム メッセージをポンピングせずに非常に長時間実行される操作を処理しています。
基本的に、私のアプリケーションはコンピューティングを行っていて、長い間ウィンドウに応答していないようで、ビジュアル スタジオはそれをシャットダウンし、デッドロックの可能性を報告します。
私はいくつかの調査を行おうとしており、2つの解決策を見つけました。
デッドロックを検出するために、Visual Studio デバッガーの一部のオプションを無効にします。デバッグ目的でのみ機能するため、機能しません。
いくつかの DoEvents メソッドを呼び出しますが、それは WPF ではなく Windows フォーム用であり、私は WPF を使用しています。
別のスレッドを作成するという提案もありましたが、私はスレッド化がまったく初めてで、どうすればよいかわかりません。何か提案はありますか?