我有一些微妙的代码依赖于 Task.Delay 足够准确,以至于它不会延迟少于预期的延迟。如果延迟更多,那很好。基本上,它归结为:
var now = DateTime.UtcNow;
var then = now + TimeSpan.FromMilliseconds(10);
await Task.Delay(10);
if (DateTime.UtcNow < then)
{
// Is it possible to get here?
}
我想知道 if 语句中的谓词是否有可能变为真 - 可能 Task.Delay 延迟稍微少一点,或者 DateTime.Now 稍微不准确?
假设在执行期间永远不会调整时钟。
这是硬件依赖,操作系统依赖,还是可以保证总是错误的?