什么时候使用 Thread.Sleep() 是明智的?[已关闭]

2022-09-01 20:38:58

我总是看到人们使用用于创建处理延迟或类似的东西,人们总是因为以这种方式使用它而受到嘲笑。Thread.Sleep()

什么时候使用是明智/必需的?Thread.Sleep()


答案 1

当您在后台线程中实际需要延迟时,应调用。Thread.sleep()

不要调用它来帮助同步(它不会),不要在循环中调用它来等待某些东西(它会很慢),也永远不要在UI线程上调用它(它会冻结)。


答案 2

当你需要在一些一次性或测试代码中引入暂停时,Thread.Sleep()是可以的。

在生产代码中,最好尝试找到其他选项。例如,如果您尝试在某个时间间隔内执行某些操作,请使用许多预先存在的计时器类之一。如果尝试在输入队列清空时暂停(以及在 .NET 上),请考虑改用 和。Monitor.Wait()Monitor.Pulse()

更多(再次,.以 NET 为中心的)在本文中解释了 Sleep() 的缺点:Thread.Sleep 是设计不佳的程序的标志。