我帮助一个客户使用了一段时间后停止工作的应用程序(它最终又开始工作了)。
问题是当Task失败时它使用Thread.Sleep了 5 秒(在任务中)。由于每两秒可能有多达 800 个任务排队,您可以想象如果其中许多作业失败并被调用时会出现问题Thread.Sleep。这些工作都没有标记TaskCreationOptions.LongRunning。
我重写了任务,以便Thread.Sleep(或Task.Delay就此而言)不是必要的。
但是,我对TaskScheduler(默认)在那种情况下做了什么感兴趣。它如何以及何时增加线程数?