【发布时间】:2013-07-05 17:08:27
【问题描述】:
我帮助一个客户的应用程序在一段时间后停止工作(它最终又开始工作了)。
问题是当Task 失败时,它使用Thread.Sleep 5 秒(在任务中)。由于每两秒可能有多达 800 个任务排队,您可以想象如果其中许多作业失败并调用Thread.Sleep 会出现问题。这些职位都没有标有TaskCreationOptions.LongRunning。
我重写了这些任务,这样Thread.Sleep(或Task.Delay)就不是必要的了。
但是,我对 TaskScheduler(默认值)在这种情况下的作用感兴趣。它如何以及何时增加线程数?
【问题讨论】:
-
如果您可以使用
await Task.Delay(),那将解决您的问题。 -
@svick:我已经解决了这个问题。这不是问题