Thread.Sleep() 和 await Task.Delay 之间的真正区别是啥? [复制]
Posted
技术标签:
【中文标题】Thread.Sleep() 和 await Task.Delay 之间的真正区别是啥? [复制]【英文标题】:What's the true difference between Thread.Sleep() and await Task.Delay? [duplicate]Thread.Sleep() 和 await Task.Delay 之间的真正区别是什么? [复制] 【发布时间】:2020-03-04 03:45:38 【问题描述】:这两种方法都使当前函数休眠,然后继续执行,但它们之间的真正区别是什么? await 将要求方法是异步的,为什么不直接使用 Thread.Sleep 呢?
什么时候不应该使用 Thread.Sleep 而使用 Task.Delay?
【问题讨论】:
【参考方案1】:Thread.Sleep
将导致操作系统线程暂停,直到计时器结束。
await Task.Delay
将注册一个回调方法,当计时器结束时操作系统将执行该方法。然后该方法将返回一个不完整的Task
。允许调用者立即在此 OS 线程上执行其他操作。
【讨论】:
以上是关于Thread.Sleep() 和 await Task.Delay 之间的真正区别是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
timeunit的sleep和thread的sleep有啥区别