Thread.Sleep Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zawiesza bieżący wątek przez określony czas.
Przeciążenia
Sleep(Int32) |
Zawiesza bieżący wątek dla określonej liczby milisekund. |
Sleep(TimeSpan) |
Zawiesza bieżący wątek przez określony czas. |
Sleep(Int32)
- Źródło:
- Thread.cs
- Źródło:
- Thread.cs
- Źródło:
- Thread.cs
Zawiesza bieżący wątek dla określonej liczby milisekund.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep (int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
Parametry
- millisecondsTimeout
- Int32
Liczba milisekund, dla których wątek jest zawieszony. Jeśli wartość argumentu millisecondsTimeout
ma wartość zero, wątek rezygnuje z pozostałej części czasu do dowolnego wątku o równym priorytetzie, który jest gotowy do uruchomienia. Jeśli nie ma innych wątków o równym prioryfikcie, które są gotowe do uruchomienia, wykonanie bieżącego wątku nie jest zawieszone.
Wyjątki
Wartość limitu czasu jest ujemna i nie jest równa Infinite.
Przykłady
W poniższym przykładzie Sleep użyto metody , aby zablokować główny wątek aplikacji.
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.
Uwagi
Wątek nie zostanie zaplanowany do wykonania przez system operacyjny przez określony czas. Ta metoda zmienia stan wątku tak, aby zawierał WaitSleepJoinelement .
Można określić Timeout.Infinite , aby millisecondsTimeout
parametr zawiesił wątek na czas nieokreślony. Zalecamy jednak używanie innych System.Threading klas, takich jak Mutex, Monitor, EventWaitHandlelub zamiast tego do synchronizowania wątków lub Semaphore zarządzania zasobami.
Zegar systemowy tyka z określoną szybkością o nazwie rozdzielczość zegara. Rzeczywisty limit czasu może nie być dokładnie określonym limitem czasu, ponieważ określony limit czasu zostanie dostosowany w celu zbiegu się z znacznikami zegara. Aby uzyskać więcej informacji na temat rozdzielczości zegara i czasu oczekiwania, zobacz funkcja Uśpienie z interfejsów API systemu Windows.
Ta metoda nie wykonuje standardowej pompowania COM i SendMessage.
Uwaga
Jeśli musisz spać w wątku z elementem , STAThreadAttributeale chcesz wykonać standardowe pompowanie COM i SendMessage, rozważ użycie jednego z przeciążeń Join metody, która określa interwał limitu czasu.
Dotyczy
Sleep(TimeSpan)
- Źródło:
- Thread.cs
- Źródło:
- Thread.cs
- Źródło:
- Thread.cs
Zawiesza bieżący wątek przez określony czas.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep (TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
Parametry
- timeout
- TimeSpan
Czas, przez który wątek jest zawieszony. Jeśli wartość argumentu timeout
to Zero, wątek ponownie odsunie pozostałą część czasu do dowolnego wątku o równym priorytetzie, który jest gotowy do uruchomienia. Jeśli nie ma innych wątków o równym prioryfikcie, które są gotowe do uruchomienia, wykonanie bieżącego wątku nie jest zawieszone.
Wyjątki
Wartość jest timeout
ujemna i nie jest równa Infinite w milisekundach lub jest większa niż Int32.MaxValue milisekund.
Przykłady
W poniższym przykładzie użyto Sleep(TimeSpan) przeciążenia metody, aby zablokować główny wątek aplikacji pięć razy, za każdym razem dwa sekundy.
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.
Uwagi
Wątek nie zostanie zaplanowany do wykonania przez system operacyjny przez określony czas. Ta metoda zmienia stan wątku tak, aby zawierał WaitSleepJoinelement .
Można określić Timeout.InfiniteTimeSpan , aby timeout
parametr zawiesił wątek na czas nieokreślony. Zalecamy jednak używanie innych System.Threading klas, takich jak Mutex, Monitor, EventWaitHandlelub zamiast tego do synchronizowania wątków lub Semaphore zarządzania zasobami.
To przeciążenie Sleep używa całkowitej liczby milisekund w .timeout
Milisekundy ułamkowe są odrzucane.
Ta metoda nie wykonuje standardowej pompowania COM i SendMessage.
Uwaga
Jeśli musisz spać w wątku z elementem , STAThreadAttributeale chcesz wykonać standardowe pompowanie COM i SendMessage, rozważ użycie jednego z przeciążeń Join metody, która określa interwał limitu czasu.