我想知道Task.Delay(-1)
或Task.Delay(TimeSpan.FromMilliseconds(-1))
是否有任何用例。根据各自的文档,该方法创建在完成之前无限期等待的任务。我知道await Task.Delay(...)
不会阻塞线程也不会消耗太多资源,但是当浪费一些资源实际上很有用时,我想不出任何情况。
我的问题是关于Task.Deley()
没有取消令牌的重载 - overloads that include cancellation token可能会更有用,因为等待期可能会中断。
我是否错过了无限期等待任务的一些用例?它们只存在于方法重载之间的一致性吗?
答案 0 :(得分:5)
我不认为他们打算将它用作Task.Delay(-1),而是使用Task.Delay(-1,cancellationToken)。这样你就可以开始你的任务并永久阻止它,或者直到cancelToken(在这种情况下是一个"开始标记")被触发。我无法想到自己做.Delay(-1)的原因,因为这也会阻止进程退出。