Thread.Sleep Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pozastaví aktuální vlákno po zadanou dobu.
Přetížení
| Name | Description |
|---|---|
| Sleep(Int32) |
Pozastaví aktuální vlákno pro zadaný počet milisekund. |
| Sleep(TimeSpan) |
Pozastaví aktuální vlákno po zadanou dobu. |
Sleep(Int32)
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
Pozastaví aktuální vlákno pro zadaný počet 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
Počet milisekund, pro které je vlákno pozastaveno. Pokud je hodnota argumentu millisecondsTimeout nula, vlákno přepojí zbytek časového řezu na libovolné vlákno se stejnou prioritou, které je připravené ke spuštění. Pokud neexistují žádná další vlákna s stejnou prioritou, která jsou připravena ke spuštění, spuštění aktuálního vlákna není pozastaveno.
Výjimky
Hodnota časového limitu je záporná a nerovná se Infinite.
Příklady
Následující příklad používá metodu Sleep k blokování hlavního vlákna aplikace.
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.
Poznámky
Vlákno nebude naplánováno pro spuštění operačním systémem po dobu určenou pro danou dobu. Tato metoda změní stav vlákna tak, aby zahrnovala WaitSleepJoin.
Můžete zadat Timeout.Infinite , millisecondsTimeout aby parametr pozastavil vlákno neomezeně dlouho. K synchronizaci vláken nebo správě prostředků však doporučujeme použít jiné System.Threading třídy, například Mutex, MonitorEventWaitHandle, nebo Semaphore místo toho.
Systémové hodiny se odškrtá v určité míře označované jako rozlišení hodin. Skutečný časový limit nemusí být přesně zadaný časový limit, protože zadaný časový limit se upraví tak, aby se shodoval s hodinovými značkami. Další informace o rozlišení hodin a době čekání najdete ve funkci Sleep z rozhraní API systému Windows.
Tato metoda neprovádí standardní pumpování MODELU COM a SendMessage.
Note
Pokud potřebujete spát na vlákně, které má STAThreadAttribute, ale chcete provést standardní COM a SendMessage pumpování, zvažte použití jednoho z přetížení Join metody, která určuje časový limit interval.
Platí pro
Sleep(TimeSpan)
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
Pozastaví aktuální vlákno po zadanou dobu.
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
Doba, po kterou je vlákno pozastaveno. Pokud je timeouthodnota argumentu Zero , vlákno relinquishe zbytek svého časového řezu na libovolné vlákno s stejnou prioritou, která je připravena ke spuštění. Pokud neexistují žádná další vlákna s stejnou prioritou, která jsou připravena ke spuštění, spuštění aktuálního vlákna není pozastaveno.
Výjimky
Hodnota timeout je záporná a nerovná se Infinite v milisekundách nebo je větší než Int32.MaxValue milisekund.
Příklady
Následující příklad používá Sleep(TimeSpan) přetížení metody k zablokování hlavního vlákna aplikace pětkrát, po dobu dvou sekund pokaždé.
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.
Poznámky
Vlákno nebude naplánováno pro spuštění operačním systémem po dobu určenou pro danou dobu. Tato metoda změní stav vlákna tak, aby zahrnovala WaitSleepJoin.
Můžete zadat Timeout.InfiniteTimeSpan , timeout aby parametr pozastavil vlákno neomezeně dlouho. K synchronizaci vláken nebo správě prostředků však doporučujeme použít jiné System.Threading třídy, například Mutex, MonitorEventWaitHandle, nebo Semaphore místo toho.
Toto přetížení Sleep používá celkový počet celých milisekund v timeout. Zlomkové milisekundy se zahodí.
Tato metoda neprovádí standardní pumpování MODELU COM a SendMessage.
Note
Pokud potřebujete spát na vlákně, které má STAThreadAttribute, ale chcete provést standardní COM a SendMessage pumpování, zvažte použití jednoho z přetížení Join metody, která určuje časový limit interval.