私は、StartNewが実際に作業が行われている間だけThreadPoolからのスレッドを使用し、それが待機しているときにそれを解放すると想定していました。例えば:
Task.Factory.Startnew() {
() => {
..
var dr = cmd.ExecuteReader();
while (dr.Read())
{
..
}
}
}
つまり、上記のcmd.ExecuteReader()は、実行に10分かかる非常に遅いストアドプロシージャでした。TPLはスレッドをプールに戻し、スレッドをずっと保持しないと思いました。これは間違っていますか?そうでない場合、バックグラウンドワーカースレッドと言うTPLアプローチの大きな利点は何ですか。Stephen Toubの投稿を読んだ後、自分の仮定は正しくないと思い始めました。