私は "についてアプリを作っています 6人のバックグラウンドワーカー そして 1スレッド mssqlクエリ用のキュー付き。それは非常に安定していなければならず、開発は終わりに向かっているので、私はアプリが約4時間走った小さなテストを実行します。スレッドIDを除いて、すべて問題ありませんでした。
私はすべての重要なイベントとエラーをスレッドIDとともに記録します。問題は、 アプリが起動しました5から15の間のI * D値がありました。 4時間後 ほとんどのスレッド ID値は70〜90でした。のみ 時々 それらは 15、40、またはそれより小さいもの.
私の質問はこれがにつながることができることですrunning out of free threads
「エラー?私はなぜこれが起こっているのかわからない」。 2人のバックグラウンドワーカーが無限ループ(値のチェック)を行い、他のワーカーは必要に応じて数回実行されます。スレッド用のGCはありますか?なぜIDがそれほど大きな値を持つのでしょうか。
テストが実行されている間、私はマシン上で他に何もしなかった。
回答:
回答№1は1あなたの労働者が完全に近づいていると仮定古いスレッドがまだ混乱しているときに新しいスレッドがスピンアップされないのであれば、スレッドIDが増えても心配しないでください。新しいスレッドが作成されていることを示しています。プログラムをConcurrency Analyzerに接続して、実際にその動作を確認することができます。 http://msdn.microsoft.com/en-us/magazine/ee336027.aspx