【发布时间】:2014-04-25 22:51:00
【问题描述】:
我发现 Thread.Sleep() 在模拟长期任务并以优雅的方式取消它们时非常有用(避免 Thread.Abort()),另一方面,我已经阅读了使用 Thread .Sleep() 等待其他操作结束是一种不好的做法(我们有 Thread.Join() 来做这件事)。我想知道 Thread.Sleep() 在实际生产代码/情况中是否有任何应用。
【问题讨论】:
-
即使对于您希望能够取消的长期任务,通常也有更好的选择 - 通常,您将能够访问一些对象,该对象公开了一个接受的
Wait方法某种时间跨度参数。这样做的好处是,当需要取消时,响应是立即,而不是您选择的任何粒度Sleepat。 -
@Damien:在我的情况下,一个 bool 变量足以取消线程任务中的循环,因此它几乎立即返回。我在测试时使用了 Thread.Sleep(),但是我在编译之前删除了 Sleeps,所以我在生产代码中没有使用 Sleeps。
标签: multithreading language-agnostic