5 Stimmen

Thread.Sleep c#.NET

Ich möchte einen Thread in den Ruhezustand versetzen, aber ich habe keine sleep-Methode.

Ich habe mit System.Threading .

In meinem Code schreibe ich :

Thread t = new Thread(StartPointMethod);
t.

In der Methodenliste gibt es keinen Sleep....

Was könnte das Problem sein?

21voto

Saleh Punkte 2921

Mit diesem Code wird der aktuelle Thread für 20 Sekunden schlafen gelegt.

System.Threading.Thread.Sleep(20000);

12voto

Farzin Zaker Punkte 3548

Verwenden Sie diese Methode in jeder Methode in Ihrem neuen Thread, die Sie schlafen wollen.

System.Threading.Thread.Sleep(500);

10voto

faester Punkte 14508

Sleep ist eine statische Methode für "Thread", keine Instanzmethode. Wenn Sie also einen Thread zum Schlafen bringen wollen, müssen Sie eine Thread.Sleep-Anweisung in seiner Ausführungsmethode haben.

Da Thread.Sleep den ausführenden Thread immer schlafen lässt, können Sie etwas in der Zeile des folgenden Beispiels tun.

    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");
    }

4voto

Jim Mischel Punkte 125706

Es gibt keine Möglichkeit für Thread A, Thread B in den Ruhezustand zu versetzen. Das heißt, Sie können nicht schreiben:

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

Vous peut aussetzen und später wieder aufnehmen, aber das ist eine sehr schlechte Idee. Sie riskieren damit alle möglichen katastrophalen Folgen. Es gibt einen Grund dafür, dass Thread.Suspend wurde überflüssig.

In normalem Code (d.h. außerhalb des Schreibens von Debuggern und OS-Level-Zeug) gibt es nie einen guten Grund, einen Thread anzuhalten. Und es gibt fast nie ein guter Grund für einen Anruf Thread.Sleep . Wenn Sie feststellen, dass Sie einen Faden aussetzen oder schlafen lassen müssen, liegt mit ziemlicher Sicherheit ein Designproblem vor, das Sie beheben müssen.

2voto

Asfour Punkte 114

Müssen Sie diesen Code verwenden:

Thread.Sleep(5);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X