Thread.Sleep Método

Definição

Suspende o thread atual pela quantidade de tempo especificada.

Sobrecargas

Nome Description
Sleep(Int32)

Suspende o thread atual para o número especificado de milissegundos.

Sleep(TimeSpan)

Suspende o thread atual pela quantidade de tempo especificada.

Sleep(Int32)

Suspende o thread atual para o número especificado de milissegundos.

public:
 static void Sleep(int millisecondsTimeout);
public static void Sleep(int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)

Parâmetros

millisecondsTimeout
Int32

O número de milissegundos para os quais o thread está suspenso. Se o valor do millisecondsTimeout argumento for zero, o thread abrirá mão do restante de sua fatia de tempo para qualquer thread de prioridade igual que esteja pronto para ser executado. Se não houver outros threads de prioridade igual que estejam prontos para serem executados, a execução do thread atual não será suspensa.

Exceções

O valor de tempo limite é negativo e não é igual a Infinite.

Exemplos

O exemplo a seguir usa o Sleep método para bloquear o thread principal do aplicativo.

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.

Comentários

O thread não será agendado para execução pelo sistema operacional durante o tempo especificado. Esse método altera o estado do thread para incluir WaitSleepJoin.

Você pode especificar Timeout.Infinite para o millisecondsTimeout parâmetro suspender o thread indefinidamente. No entanto, recomendamos que você use outras System.Threading classes, como Mutex, Monitorou EventWaitHandleSemaphore em vez disso, para sincronizar threads ou gerenciar recursos.

O relógio do sistema funciona a uma taxa específica chamada resolução do relógio. O tempo limite real pode não ser exatamente o tempo limite especificado, pois o tempo limite especificado será ajustado para coincidir com tiques de relógio. Para obter mais informações sobre a resolução do relógio e o tempo de espera, consulte a função Sleep das APIs do sistema Windows.

Esse método não executa o bombeamento padrão de COM e SendMessage.

Note

Se você precisar dormir em um thread que tenha STAThreadAttribute, mas quiser executar o bombeamento padrão de COM e SendMessage, considere usar uma das sobrecargas do Join método que especifica um intervalo de tempo limite.

Aplica-se a

Sleep(TimeSpan)

Suspende o thread atual pela quantidade de tempo especificada.

public:
 static void Sleep(TimeSpan timeout);
public static void Sleep(TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)

Parâmetros

timeout
TimeSpan

A quantidade de tempo para a qual o thread está suspenso. Se o valor do timeout argumento for Zero, o thread abrirá mão do restante de sua fatia de tempo para qualquer thread de prioridade igual que esteja pronto para ser executado. Se não houver outros threads de prioridade igual que estejam prontos para serem executados, a execução do thread atual não será suspensa.

Exceções

O valor é timeout negativo e não é igual a Infinite milissegundos ou é maior que os milissegundos int32.MaxValue .

Exemplos

O exemplo a seguir usa a sobrecarga do Sleep(TimeSpan) método para bloquear o thread principal do aplicativo cinco vezes, por dois segundos cada vez.

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.

Comentários

O thread não será agendado para execução pelo sistema operacional durante o tempo especificado. Esse método altera o estado do thread para incluir WaitSleepJoin.

Você pode especificar Timeout.InfiniteTimeSpan para o timeout parâmetro suspender o thread indefinidamente. No entanto, recomendamos que você use outras System.Threading classes, como Mutex, Monitorou EventWaitHandleSemaphore em vez disso, para sincronizar threads ou gerenciar recursos.

Essa sobrecarga usa Sleep o número total de milissegundos inteiros em timeout. Milissegundos fracionários são descartados.

Esse método não executa o bombeamento padrão de COM e SendMessage.

Note

Se você precisar dormir em um thread que tenha STAThreadAttribute, mas quiser executar o bombeamento padrão de COM e SendMessage, considere usar uma das sobrecargas do Join método que especifica um intervalo de tempo limite.

Aplica-se a