Thread.Sleep Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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)
- 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 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)
- Quelle:
- Thread.cs
- Quelle:
- Thread.cs
- Quelle:
- Thread.cs
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.