解決できないエラーメッセージが表示されます。Visual Studioまたはデバッガーから発生します。最終的なエラー状態がVS、デバッガー、プログラム、データベースのどれにあるのかわかりません。
これはWindowsアプリです。Webアプリではありません。
VSからの最初のメッセージは、「呼び出しスタックフレームにシンボルが読み込まれていません。ソースコードを表示できません。」というポップアップボックスです。クリックすると、「ContextSwitchDeadlockが検出されました」と、以下に再現された長いメッセージが表示されます。
エラーは、DataTableをスキャンするループで発生します。各行について、テーブルのキー(HIC#)値をSqlCommandのパラメーターとして使用します。このコマンドは、1行を返すSqlDataReaderを作成するために使用されます。データが比較されます。エラーが検出されると、行が2番目のDataTableに追加されます。
エラーは、プロシージャの実行にかかる時間(つまり60秒後)に関連しているようであり、エラーの数ではありません。メモリの問題ではないと思います。ループ内では変数は宣言されていません。作成される唯一のオブジェクトはSqlDataReadersで、構造体の使用にあります。Add System.GC.Collect()は効果がありませんでした。
dbは、同じラップトップ上のSqlServerサイトです。
フォームには派手なギズモやガジェットはありません。
私は以前に何十回もやったこととは大きく異なるこのprocの何も知りません。私は以前にエラーを見たことがありますが、一貫してではありません。
何かアイデアはありますか?
完全なエラーテキスト: CLRは、COMコンテキスト0x1a0b88からCOMコンテキスト0x1a0cf8に60秒間遷移できませんでした。宛先のコンテキスト/アパートメントを所有するスレッドは、ほとんどの場合、非ポンプ待機を実行しているか、Windowsメッセージをポンプ送信せずに非常に長時間実行されている操作を処理しています。この状況は通常、パフォーマンスに悪影響を及ぼし、アプリケーションが応答しなくなったり、メモリ使用量が時間の経過とともに継続的に蓄積したりする可能性があります。この問題を回避するには、すべてのシングルスレッドアパートメント(STA)スレッドでポンピング待機プリミティブ(CoWaitForMultipleHandlesなど)を使用し、長時間実行される操作中に定期的にメッセージをポンピングする必要があります。