You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C#循环await Task.Delay(1)的耗时与预期1000毫秒不符?

为什么循环await Task.Delay(1)的耗时远超过1000毫秒?

1. Task.Delay的系统定时器精度限制

Task.Delay依赖系统底层定时器实现,而Windows系统默认的定时器分辨率通常在15.6毫秒左右(这是系统时钟的基础滴答间隔)。即便你传入1毫秒作为延迟参数,实际等待时间也会向上取整到最近的系统时钟滴答,单次延迟实际会消耗15-16毫秒。1000次这样的延迟累加,总耗时自然会接近15000毫秒,远高于预期的1000毫秒。

2. await的线程调度额外开销

每次await完成后,线程调度器需要将后续执行逻辑重新放回线程池队列,这个调度过程会产生微小的额外开销。单次开销可以忽略,但1000次累加后,会进一步拉高总耗时。

优化建议

如果想要接近1000毫秒的延迟效果,直接使用单次延迟即可:

await Task.Delay(1000);

这种方式只会触发一次定时器和线程调度,实际耗时会更接近预期值。

内容的提问来源于stack exchange,提问作者Zuprik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:12:02