Thread.Sleep Metoda

Definice

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.

Platí pro