1

マルチスレッドアプリケーションを作成中です。これが私のケースです。

データベースから千件のレコードを取得します。リスト オブジェクトの 5 つのチャンクに分割します。それらを処理するための 5 つのスレッドを作成します。データベースにレコードが残るまで、毎分これと同じことを行います

Task.Factory.StartNew(() => ProcessRecords(listRecords))

ProcessRecords メソッド内で、小さなデータベースの更新があり、いくつかのメール送信が行われます。(私は電子メールに System.Net.Mail を使用しており、データベース操作に ORM を使用していません。)

未知の問題が原因でスレッドが完了しないのではないかと心配しています。その状況ではどうなりますか?1 つのプロセス (またはそれ以上) がデータベースのデッドロックなどを待ち続けているとします。アプリケーションに何が起こるでしょうか。新しいレコードのセットで新しいスレッドを追加し続けますが、一部のスレッドは終了しません。この状況でタイムアウトのようなものを実装するにはどうすればよいですか?

このプロセスを実行したいのですが、完了できない場合は 5 分で終了します。

4

1 に答える 1