ファイルを分析し、データベースへのトランザクション呼び出しを行うスレッドがあります。各トランザクションには、トランザクションの一部として監査エントリがあります。ファイルの処理を停止するために Thread.Abort() を呼び出すことに大きな問題はありますか? どこにでも醜い安全な場所を散らかすのではなく?
Abort 呼び出しの後、ファイルは閉じられます。
ファイルを分析し、データベースへのトランザクション呼び出しを行うスレッドがあります。各トランザクションには、トランザクションの一部として監査エントリがあります。ファイルの処理を停止するために Thread.Abort() を呼び出すことに大きな問題はありますか? どこにでも醜い安全な場所を散らかすのではなく?
Abort 呼び出しの後、ファイルは閉じられます。
明らかな問題は、不確定な時間 (またはタイムアウトまで) のブロックを引き起こす可能性があるトランザクションを放棄するリスクです。しかし、回復不能なロック、セマフォなど、メモリリークなど、あらゆる種類の混乱を解消することができます.Monitor
要するに、スレッドがその時点で何をしているかを正確に把握していない限り、スレッドをアボートする必要がないように、できる限り努力してください。そして、それが何をしているのかを知る唯一の方法は、それが既知の「安全な場所」(あなたの用語を使用するため) にあるかどうかです。 .
ベスト プラクティス: プロセスを破棄する場合にのみ、スレッドを中止します。
Thread.Interrupt() を試して、スレッドを待機状態から強制的に終了させます。