Thread.Sleep Methode

Definition

Hält den aktuellen Thread während des angegebenen Zeitraums an.

Überlädt

Sleep(Int32)

Hält den aktuellen Thread für die angegebene Anzahl von Millisekunden an.

Sleep(TimeSpan)

Hält den aktuellen Thread während des angegebenen Zeitraums an.

Sleep(Int32)

Hält den aktuellen Thread für die angegebene Anzahl von Millisekunden an.

public:
 static void Sleep(int millisecondsTimeout);
public static void Sleep (int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)

Parameter

millisecondsTimeout
Int32

Die Anzahl von Millisekunden, die der Thread angehalten wird. Wenn der Wert des millisecondsTimeout-Arguments 0 (null) lautet, gibt der Thread den Rest seines Zeitanteils an einen beliebigen Thread mit gleicher Priorität ab, der für die Ausführung bereit ist. Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten.

Ausnahmen

Der Timeoutwert ist negativ und ungleich Infinite.

Beispiele

Im folgenden Beispiel wird die Sleep -Methode verwendet, um den Standard Thread der Anwendung zu blockieren.

using namespace System;
using namespace System::Threading;

int main()
{
    for (int i = 0; i < 5; i++)
    {
        Console::WriteLine("Sleep for 2 seconds.");
        Thread::Sleep(2000);
    }

    Console::WriteLine("Main thread exits.");
}

/* This example produces the following output:

Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
 */
using System;
using System.Threading;

class Example
{
    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Sleep for 2 seconds.");
            Thread.Sleep(2000);
        }

        Console.WriteLine("Main thread exits.");
    }
}

/* This example produces the following output:

Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
 */
open System.Threading

for _ = 0 to 4 do
    printfn "Sleep for 2 seconds."
    Thread.Sleep 2000

printfn "Main thread exits."

// This example produces the following output:
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Main thread exits.
Imports System.Threading

Class Example

    Shared Sub Main()

        For i As Integer = 0 To 4
            Console.WriteLine("Sleep for 2 seconds.")
            Thread.Sleep(2000)
        Next

        Console.WriteLine("Main thread exits.")
    End Sub
End Class

' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.

Hinweise

Die Ausführung des Threads wird vom Betriebssystem für den angegebenen Zeitraum nicht geplant. Diese Methode ändert den Status des Threads in .WaitSleepJoin

Sie können angeben Timeout.Infinite , dass der millisecondsTimeout -Parameter den Thread auf unbestimmte Zeit angehalten soll. Es wird jedoch empfohlen, dass Sie stattdessen andere System.Threading Klassen wie Mutex, Monitor, EventWaitHandleoder Semaphore verwenden, um Threads zu synchronisieren oder Ressourcen zu verwalten.

Die Systemuhr tickt mit einer bestimmten Rate, die als Taktauflösung bezeichnet wird. Das tatsächliche Timeout entspricht möglicherweise nicht genau dem angegebenen Timeout, da das angegebene Timeout so angepasst wird, dass er mit Takttakten übereinstimmt. Weitere Informationen zur Uhrauflösung und zur Wartezeit finden Sie in der Standbyfunktion der Windows-System-APIs.

Diese Methode führt keine Standardmäßig-COM- und SendMessage-Pumpvorgänge aus.

Hinweis

Wenn Sie den Standbymodus für einen Thread benötigen, der über STAThreadAttributeverfügt, sie aber standardmäßiges COM- und SendMessage-Pumping ausführen möchten, sollten Sie eine der Überladungen der -Methode verwenden, die Join ein Timeoutintervall angibt.

Gilt für:

Sleep(TimeSpan)

Hält den aktuellen Thread während des angegebenen Zeitraums an.

public:
 static void Sleep(TimeSpan timeout);
public static void Sleep (TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)

Parameter

timeout
TimeSpan

Der Zeitraum, während dessen der Thread angehalten wird. Wenn der Wert des timeout-Arguments Zero lautet, gibt der Thread den Rest seines Zeitanteils an einen beliebigen Thread mit gleicher Priorität ab, der für die Ausführung bereit ist. Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten.

Ausnahmen

Der Wert von timeout ist negativ und ist in Millisekunden ungleich Infinite oder größer als Int32.MaxValue Millisekunden.

Beispiele

Im folgenden Beispiel wird die Sleep(TimeSpan) Methodenüberladung verwendet, um den Standard Thread der Anwendung fünfMal für jeweils zwei Sekunden zu blockieren.

using namespace System;
using namespace System::Threading;

int main()
{
    TimeSpan interval = TimeSpan(0, 0, 2);

    for (int i = 0; i < 5; i++)
    {
        Console::WriteLine("Sleep for 2 seconds.");
        Thread::Sleep(interval);
    }

    Console::WriteLine("Main thread exits.");
}

/* This example produces the following output:

Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
 */
using System;
using System.Threading;

class Example
{
    static void Main()
    {
        TimeSpan interval = new TimeSpan(0, 0, 2);

        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Sleep for 2 seconds.");
            Thread.Sleep(interval);
        }

        Console.WriteLine("Main thread exits.");
    }
}

/* This example produces the following output:

Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
 */
open System
open System.Threading

let interval = TimeSpan(0, 0, 2)

for _ = 0 to 4 do
    printfn "Sleep for 2 seconds."
    Thread.Sleep interval

printfn "Main thread exits."

// This example produces the following output:
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Sleep for 2 seconds.
//     Main thread exits.
Imports System.Threading

Class Example

    Shared Sub Main()

        Dim interval As New TimeSpan(0, 0, 2)

        For i As Integer = 0 To 4
            Console.WriteLine("Sleep for 2 seconds.")
            Thread.Sleep(interval)
        Next

        Console.WriteLine("Main thread exits.")
    End Sub
End Class

' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.

Hinweise

Die Ausführung des Threads wird vom Betriebssystem für den angegebenen Zeitraum nicht geplant. Diese Methode ändert den Status des Threads in .WaitSleepJoin

Sie können angeben Timeout.InfiniteTimeSpan , dass der timeout -Parameter den Thread auf unbestimmte Zeit angehalten soll. Es wird jedoch empfohlen, dass Sie stattdessen andere System.Threading Klassen wie Mutex, Monitor, EventWaitHandleoder Semaphore verwenden, um Threads zu synchronisieren oder Ressourcen zu verwalten.

Diese Überladung von Sleep verwendet die Gesamtzahl der ganzen Millisekunden in timeout. Bruchteile von Millisekunden werden verworfen.

Diese Methode führt keine Standardmäßig-COM- und SendMessage-Pumpvorgänge aus.

Hinweis

Wenn Sie den Standbymodus für einen Thread benötigen, der über STAThreadAttributeverfügt, sie aber standardmäßiges COM- und SendMessage-Pumping ausführen möchten, sollten Sie eine der Überladungen der -Methode verwenden, die Join ein Timeoutintervall angibt.

Gilt für: