我假设 StartNew 仅在实际完成工作时使用 ThreadPool 中的线程,并在等待时释放它。例如:
Task.Factory.Startnew() {
() => {
..
var dr = cmd.ExecuteReader();
while (dr.Read())
{
..
}
}
}
所以说上面的 cmd.ExecuteReader() 是一个非常慢的存储过程,需要 10 分钟才能运行。我认为 TPL 会将线程释放回池中,而不是一直保留线程。这是不正确的吗?如果不是,那么 TPL 方法的最大优势是说后台工作线程。阅读Stephen Toub 的帖子后,我开始认为我的假设不正确。