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