このコード行には重大な問題があります。
new OdbcConnection(builder.ConnectionString)
私たちの顧客は毎晩 DB2 データベースをダウンさせてバックアップしているため、コードがこのコード行でハングすることがあります。1時間待っても固まります。残念ながら、このエラーは自由に再現することはできず、ランダムに数日しか発生しません。
このような問題に関する Microsoft の KB 記事がありますが、MDAC のバージョンの方が新しいため、この修正は適用されません。
問題を解決する他の方法が見つからなかったので、新しいスレッドを開始して、タイムアウト後に強制終了できるオブジェクトを作成しようとしました。タスクを使用できますが、タスクはハングするかどうかに関係なく 1 行のコードで構成されているため、評価できないキャンセル トークンでのみタスクをキャンセルできます。
タスクを中止する方法を検索しているときに、タスクを中止することはできず、Thread.Abort を使用すべきではないと誰もが言います。
ただし、この場合、これ以外の可能性は見当たりません。このぶら下がっているコードを処理するより良い方法を提案できる人はいますか?