Thread.Sleep c #.NET

时间:2011-05-03 07:03:28

标签: c# .net multithreading

我想让一个线程进入睡眠状态,而我没有睡眠方法。

我使用System.Threading

在我的代码中,我写道:

Thread t = new Thread(StartPointMethod);
t.

在方法列表中没有睡眠....

可能是什么问题?

8 个答案:

答案 0 :(得分:15)

此睡眠当前线程的代码为20秒。

System.Threading.Thread.Sleep(20000);

答案 1 :(得分:12)

在您想要睡觉的新线程的任何方法中使用此方法。

System.Threading.Thread.Sleep(500);

答案 2 :(得分:10)

Sleep是'Thread'上的静态方法,而不是实例方法。因此,使线程睡眠的方法是在其中执行方法中有一个Thread.Sleep语句。

由于Thread.Sleep将始终使执行线程休眠,您可以在下面示例的行中执行某些操作。

    private void Foo()
    {
        Thread t = new Thread(new ThreadStart(ThreadWorker));
        t.Start();

        t.Join();
    }

    private void ThreadWorker()
    {
        Console.WriteLine("Prior to sleep");
        Thread.Sleep(100);
        Console.WriteLine("After sleep sleep");
    }

答案 3 :(得分:4)

线程A无法告诉线程B进入休眠状态。也就是说,你不能写:

Thread t = new Thread(...);
t.Start();
t.Sleep();

可以 suspend一个帖子,然后稍后恢复,但这是一个非常糟糕的主意。这样做可能会带来各种潜在的灾难性后果。 Thread.Suspend已被淘汰的原因。

在普通代码中(即在编写调试器和OS级别的东西之外),永远不会有充分的理由暂停线程。并且几乎从来没有一个很好的理由来致电Thread.Sleep。如果您发现需要暂停或睡眠线程,那么您几乎肯定会遇到一个需要解决的设计问题。

答案 4 :(得分:2)

你必须使用这段代码:

Thread.Sleep(5);

答案 5 :(得分:2)

为了扩展上面的(正确)答案,Thread.sleep是一个静态方法。静态方法与类(Thread)相关联,但不与类的特定实例相关联。

因此,要调用Thread.Sleep - 你只需编写(如上所述)“Thread.Sleep(msecs)” - 你不需要创建一个线程来调用该方法。

答案 6 :(得分:-1)

Thread.Sleep(milliseconds) 让当前线程休眠 x 毫秒。一个线程无法让另一个线程进入睡眠状态。 Thread.Sleep 总是指向当前线程。

答案 7 :(得分:-2)

System.Thread 有一个专门为此创建的函数。

System.Threading.Thread.Sleep(100)

Sleep 函数接受一个以毫秒为单位的参数。