データベースにデータを書き込むためにいくつかのバックグラウンドスレッドを実行するWCFサービスで作業しています。バックグラウンドスレッドは、標準プロデューサ&消費者のパターンを使用して実装されている:WCFプロセス内でAutoResetEventがスレッドを起動しないことがある
サービスは、シングルインスタンス・モードで実行されます。
今、私たちが守っ何:
ワーカースレッドが開始され、すべてがしばらくの間、正常に動作します。
ある時点で、データがキューとイベントセットに追加されても、どうにかしてワーカースレッドはもう目を覚ますことはありません。
ワーカースレッドの優先度も高いので、サーバーが非常にビジー状態であってもタイムスライスを取得する必要があります。
私はこの時点で何をすべきか分かりません。IISホストプロセスがある時点でワーカースレッドをもうスケジュールしないように決定したようです。
ホストプロセスがシャットダウンされません。プロセスはまだ生きており、他の要求からログエントリが作成されます。データベースのワーカースレッドのみがこれ以上実行されない – user1803928
正確には、WCFスレッドを放棄することはできません。いくつかのバックグラウンドワーカーを起動してからリターンするリクエストを開始すると、ワーカースレッドは失われます。 WCFの応答を返す前に、すべてのバックグラウンドスレッドを終了するまで待つ必要があります。 Windowsサービスを使用している場合は、WCFでAsyncメソッドを作成することができます。これにより、バックグラウンドスレッドを開始して後で返すことができます。IISで行うことはできません。 –
これはインスタンスコンテキストモードのシングルでは発生しません。 – user1803928