Thread.Sleep Methode

Definition

Hält den aktuellen Thread für die angegebene Zeitspanne an.

Überlädt

Name Beschreibung
Sleep(Int32)

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

Sleep(TimeSpan)

Hält den aktuellen Thread für die angegebene Zeitspanne an.

Sleep(Int32)

Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs

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 der Millisekunden, für die der Thread angehalten wird. Wenn der Wert des millisecondsTimeout Arguments null ist, gibt der Thread den Rest des Zeitsegments auf einen beliebigen Thread mit gleicher Priorität zurück, der zur Ausführung bereit ist. Wenn keine anderen Threads gleicher Priorität vorhanden sind, die zur Ausführung bereit sind, wird die Ausführung des aktuellen Threads nicht angehalten.

Ausnahmen

Der Timeoutwert ist negativ und ist nicht gleich Infinite.

Beispiele

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

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

Der Thread wird nicht für die Ausführung durch das Betriebssystem für den angegebenen Zeitraum geplant. Mit dieser Methode wird der Zustand des Threads geändert, der eingeschlossen wird WaitSleepJoin.

Sie können angeben Timeout.Infinite , dass der millisecondsTimeout Parameter den Thread unbegrenzt angehalten. Es wird jedoch empfohlen, andere System.Threading Klassen wie Mutex, Monitor, , EventWaitHandleoder Semaphore stattdessen zum Synchronisieren von Threads oder zum Verwalten von Ressourcen zu verwenden.

Die Systemuhr tickt mit einer bestimmten Rate, die als Uhrauflösung bezeichnet wird. Das tatsächliche Timeout ist möglicherweise nicht genau das angegebene Timeout, da das angegebene Timeout so angepasst wird, dass es mit Taktstrichen übereinstimmt. Weitere Informationen zur Uhrauflösung und zur Wartezeit finden Sie in der funktion Sleep aus den Windows System-APIs.

Diese Methode führt keine standardmäßigen COM- und SendMessage-Pumpvorgänge durch.

Note

Wenn Sie in einem Thread schlafen müssen, der STAThreadAttributejedoch standardmäßiges COM- und SendMessage-Pumpen ausführt, sollten Sie eine der Überladungen der Join Methode verwenden, die ein Timeoutintervall angibt.

Gilt für:

Sleep(TimeSpan)

Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs
Quelle:
Thread.cs

Hält den aktuellen Thread für die angegebene Zeitspanne 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

Die Zeitspanne, für die der Thread angehalten wird. Wenn der Wert des timeout Arguments lautet Zero, gibt der Thread den Rest des Zeitsegments auf einen beliebigen Thread mit gleicher Priorität zurück, der zur Ausführung bereit ist. Wenn keine anderen Threads gleicher Priorität vorhanden sind, die zur Ausführung bereit sind, wird die Ausführung des aktuellen Threads nicht angehalten.

Ausnahmen

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

Beispiele

Im folgenden Beispiel wird die Sleep(TimeSpan) Methodenüberladung verwendet, um den Hauptthread der Anwendung fünfmal zu blockieren, und das jeweils zwei Sekunden.

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

Der Thread wird nicht für die Ausführung durch das Betriebssystem für den angegebenen Zeitraum geplant. Mit dieser Methode wird der Zustand des Threads geändert, der eingeschlossen wird WaitSleepJoin.

Sie können angeben Timeout.InfiniteTimeSpan , dass der timeout Parameter den Thread unbegrenzt angehalten. Es wird jedoch empfohlen, andere System.Threading Klassen wie Mutex, Monitor, , EventWaitHandleoder Semaphore stattdessen zum Synchronisieren von Threads oder zum Verwalten von Ressourcen zu verwenden.

Diese Überladung Sleep verwendet die Gesamtzahl der gesamten Millisekunden in timeout. Bruch millisekunden werden verworfen.

Diese Methode führt keine standardmäßigen COM- und SendMessage-Pumpvorgänge durch.

Note

Wenn Sie in einem Thread schlafen müssen, der STAThreadAttributejedoch standardmäßiges COM- und SendMessage-Pumpen ausführt, sollten Sie eine der Überladungen der Join Methode verwenden, die ein Timeoutintervall angibt.

Gilt für: