【发布时间】:2016-12-27 03:40:39
【问题描述】:
我想知道Task.Delay(-1) 或Task.Delay(TimeSpan.FromMilliseconds(-1)) 是否有任何用例。根据各自的文档,该方法创建的任务在完成之前无限期等待。我知道await Task.Delay(...) 不会阻塞线程,也不会消耗太多资源,但我想不出浪费一些资源实际上有用的任何场景。
我的问题是关于 Task.Deley() 的过载而没有取消令牌 - overloads that include cancellation token 可能会更有用,因为等待期可能会被中断。
我是否错过了一些无限期等待任务的用例?它们只是为了方法重载之间的一致性而存在吗?
【问题讨论】:
-
您是否因此问是否有一个任务的用例,一旦启动就会无限期地等待被触发,而不是只在您需要的时候创建一个任务?
-
@iheanyi 不是真的。我的意思是,如果你创建了一个任务,你最终想要启动它——所以如果你有一个
var t = Task.Delay(-1),在某些时候你想要await t(或者等待t和其他一些任务的组合)和等待t对我来说没有任何意义。 -
明确一点,你说的是
System.Threading.Timeout.Infinite(msdn.microsoft.com/en-us/library/…) 这个字段的值为-1 (0xFFFFFFFF) -
@TomaszMaczyński:嗯,我想不出一个……确实,这似乎违反了Stephen Toub's advice here。
标签: c# .net vb.net async-await task-parallel-library