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 na zadanou dobu.
Přetížení
Sleep(Int32) |
Pozastaví aktuální vlákno na zadaný počet milisekund. |
Sleep(TimeSpan) |
Pozastaví aktuální vlákno na zadanou dobu. |
Sleep(Int32)
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
Pozastaví aktuální vlákno na 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řenechá zbytek svého časového řezu na libovolné vlákno se stejnou prioritou, které je připravené ke spuštění. Pokud nejsou připravená ke spuštění žádná další vlákna se stejnou prioritou, spuštění aktuálního vlákna se nepozastaví.
Výjimky
Hodnota časového limitu je záporná a nerovná se hodnotě Infinite.
Příklady
Následující příklad používá metodu Sleep k blokování hlavního vlákna aplikace.
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.
Poznámky
Vlákno nebude naplánováno na spuštění operačním systémem po zadanou dobu. Tato metoda změní stav vlákna tak, aby zahrnoval WaitSleepJoin.
Můžete zadat Timeout.Infinite , aby millisecondsTimeout
parametr pozastavil vlákno na neomezenou dobu. K synchronizaci vláken nebo správě prostředků ale doporučujeme použít jiné System.Threading třídy, MonitorEventWaitHandlejako Mutexje , , nebo Semaphore .
Systémové hodiny tikají určitou rychlostí, které se říká rozlišení hodin. Skutečný časový limit nemusí být přesně zadaný časový limit, protože zadaný časový limit se upraví tak, aby odpovídal časovým limitům. Další informace o rozlišení hodin a čekací době najdete v tématu Funkce Spánku z rozhraní API systému Windows.
Tato metoda neprovádí standardní pumpování COM a SendMessage.
Poznámka
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 interval časového limitu.
Platí pro
Sleep(TimeSpan)
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
- Zdroj:
- Thread.cs
Pozastaví aktuální vlákno na 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 Zerohodnota argumentu timeout
, vlákno přenechá zbytek svého časového řezu libovolnému vláknu se stejnou prioritou, které je připravené ke spuštění. Pokud nejsou připravená ke spuštění žádná další vlákna se stejnou prioritou, spuštění aktuálního vlákna se nepozastaví.
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, vždy po dobu dvou sekund.
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.
Poznámky
Vlákno nebude naplánováno na spuštění operačním systémem po zadanou dobu. Tato metoda změní stav vlákna tak, aby zahrnoval WaitSleepJoin.
Můžete zadat Timeout.InfiniteTimeSpan , aby timeout
parametr pozastavil vlákno na neomezenou dobu. K synchronizaci vláken nebo správě prostředků ale doporučujeme použít jiné System.Threading třídy, MonitorEventWaitHandlejako Mutexje , , nebo Semaphore .
Toto přetížení Sleep využívá celkový počet celých milisekund v nástroji timeout
. Desetinné milisekundy se zahodí.
Tato metoda neprovádí standardní pumpování COM a SendMessage.
Poznámka
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 interval časového limitu.