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
| Nazwa | Opis |
|---|---|
| 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
- Ź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 reszty wycinka czasu do dowolnego wątku o równym priorytetzie, który jest gotowy do uruchomienia. Jeśli nie ma żadnych 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 Infinitewartości .
Przykłady
W poniższym przykładzie użyto Sleep metody , aby zablokować główny wątek aplikacji.
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 parametr, millisecondsTimeout aby zawiesić wątek na czas nieokreślony. Zalecamy jednak używanie innych System.Threading klas, takich jak Mutex, Monitor, EventWaitHandlelub, do Semaphore synchronizowania wątków lub zarządzania zasobami.
Zegar systemowy tyka z określoną szybkością o nazwie rozdzielczość zegara. Rzeczywiste przekroczenie limitu czasu może nie być dokładnie określonym limitem czasu, ponieważ określony limit czasu zostanie dostosowany tak, aby zbiegł się z znacznikami zegara. Aby uzyskać więcej informacji na temat rozdzielczości zegara i czasu oczekiwania, zobacz funkcję Sleep z interfejsów API systemu Windows.
Ta metoda nie wykonuje standardowej pompy COM i SendMessage.
Note
Jeśli musisz spać w wątku, który ma STAThreadAttributewartość , ale 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
- Ź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 wstrzymania wątku. Jeśli wartość argumentu timeout to Zero, wątek rezygnuje z reszty fragmentu czasu do dowolnego wątku o równym priorytcie, który jest gotowy do uruchomienia. Jeśli nie ma żadnych 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 ujemna timeout i nie jest równa Infinite w milisekundach lub jest większa niż w milisekundach Int32.MaxValue .
Przykłady
W poniższym przykładzie użyto Sleep(TimeSpan) przeciążenia metody, aby zablokować główny wątek aplikacji pięć razy, przez dwie sekundy za każdym razem.
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 parametr, timeout aby zawiesić wątek na czas nieokreślony. Zalecamy jednak używanie innych System.Threading klas, takich jak Mutex, Monitor, EventWaitHandlelub, do Semaphore synchronizowania wątków lub zarządzania zasobami.
To przeciążenie Sleep używa całkowitej liczby całych milisekund w elem timeout. Ułamkowe milisekundy są odrzucane.
Ta metoda nie wykonuje standardowej pompy COM i SendMessage.
Note
Jeśli musisz spać w wątku, który ma STAThreadAttributewartość , ale chcesz wykonać standardowe pompowanie COM i SendMessage, rozważ użycie jednego z przeciążeń Join metody, która określa interwał limitu czasu.