Thread.Sleep Methode

Definition

Hält den aktuellen Thread während des angegebenen Zeitraums an.Suspends the current thread for the specified amount of time.

Überlädt

Sleep(Int32)

Hält den aktuellen Thread für die angegebene Anzahl von Millisekunden an.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan)

Hält den aktuellen Thread während des angegebenen Zeitraums an.Suspends the current thread for the specified amount of time.

Sleep(Int32)

Hält den aktuellen Thread für die angegebene Anzahl von Millisekunden an.Suspends the current thread for the specified number of milliseconds.

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.The number of milliseconds for which the thread is suspended. 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.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Ausnahmen

Der Timeoutwert ist negativ und ungleich Infinite.The time-out value is negative and is not equal to Infinite.

Beispiele

Im folgenden Beispiel wird die Sleep-Methode verwendet, um den Haupt Thread der Anwendung zu blockieren.The following example uses the Sleep method to block the application's main thread.

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.
 */
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 für die angegebene Zeitspanne nicht für die Ausführung durch das Betriebssystem geplant.The thread will not be scheduled for execution by the operating system for the amount of time specified. Diese Methode ändert den Zustand des Threads, sodass er WaitSleepJoin einschließt.This method changes the state of the thread to include WaitSleepJoin.

Sie können Timeout.Infinite für den Parameter millisecondsTimeout angeben, um den Thread unbegrenzt anzuhalten.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. Es wird jedoch empfohlen, stattdessen andere System.Threading-Klassen, wie z. b. Mutex, Monitor, EventWaitHandle oder Semaphore, zu verwenden, um Threads zu synchronisieren oder Ressourcen zu verwalten.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Die Systemuhr wird mit einer bestimmten Rate, die als Takt Auflösung bezeichnet wird, Ticks.The system clock ticks at a specific rate called the clock resolution. Der tatsächliche Timeout Wert ist möglicherweise nicht genau das angegebene Timeout, da das angegebene Timeout an Zeiteinheiten angepasst wird.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. Weitere Informationen zur Takt Auflösung und zum Zeitpunkt der Wartezeit finden Sie im Thema Standby- Funktion .For more information on clock resolution and the waiting time, see the Sleep function topic. Diese Methode ruft die Funktion "Sleep " aus den Windows-System-APIs auf.This method calls the Sleep function from the Windows system APIs.

Diese Methode führt keine Standard-com-und SendMessage-Pump durch.This method does not perform standard COM and SendMessage pumping.

Hinweis

Wenn Sie in einem Thread mit STAThreadAttribute in den Standbymodus wechseln, aber ein Standardmäßiges com-und SendMessage-Pump ausführen möchten, sollten Sie eine der über Ladungen der Join-Methode verwenden, die ein Timeout Intervall angibt.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Sleep(TimeSpan)

Hält den aktuellen Thread während des angegebenen Zeitraums an.Suspends the current thread for the specified amount of time.

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.The amount of time for which the thread is suspended. Wenn der Wert des millisecondsTimeout-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.If the value of the millisecondsTimeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Sind keine anderen Threads mit gleicher Priorität vorhanden, die ausgeführt werden können, wird die Ausführung des aktuellen Threads nicht angehalten.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Ausnahmen

Der Wert von timeout ist negativ und nicht gleich Infinite in Millisekunden oder größer als MaxValue Millisekunden.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

Beispiele

Im folgenden Beispiel wird die Sleep(TimeSpan)-Methoden Überladung verwendet, um den Haupt Thread der Anwendung fünfmal zu blockieren, zwei Sekunden lang jedes Mal.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

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.
 */
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 für die angegebene Zeitspanne nicht für die Ausführung durch das Betriebssystem geplant.The thread will not be scheduled for execution by the operating system for the amount of time specified. Diese Methode ändert den Zustand des Threads, sodass er WaitSleepJoin einschließt.This method changes the state of the thread to include WaitSleepJoin.

Sie können Timeout.InfiniteTimeSpan für den Parameter timeout angeben, um den Thread unbegrenzt anzuhalten.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. Es wird jedoch empfohlen, stattdessen andere System.Threading-Klassen, wie z. b. Mutex, Monitor, EventWaitHandle oder Semaphore, zu verwenden, um Threads zu synchronisieren oder Ressourcen zu verwalten.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Diese Überladung von Sleep verwendet die Gesamtzahl ganzer Millisekunden in timeout.This overload of Sleep uses the total number of whole milliseconds in timeout. Bruchteile der Millisekunden werden verworfen.Fractional milliseconds are discarded.

Diese Methode führt keine Standard-com-und SendMessage-Pump durch.This method does not perform standard COM and SendMessage pumping.

Hinweis

Wenn Sie in einem Thread mit STAThreadAttribute in den Standbymodus wechseln, aber ein Standardmäßiges com-und SendMessage-Pump ausführen möchten, sollten Sie eine der über Ladungen der Join-Methode verwenden, die ein Timeout Intervall angibt.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Gilt für: