Thread.Sleep Método

Definição

Suspende o thread atual para o período de tempo especificado.

Sobrecargas

Sleep(Int32)

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

Sleep(TimeSpan)

Suspende o thread atual para o período de tempo especificado.

Sleep(Int32)

Suspende o thread atual no 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 durante o qual o thread ficará suspenso. Se o valor do argumento millisecondsTimeout for zero, o thread entregará o restante da fração de tempo para qualquer thread de prioridade igual que está pronto para execução. Se não houver nenhum outro thread de prioridade igual pronto para execução, 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 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.
 */
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 período especificado. Esse método altera o estado do thread a ser incluído WaitSleepJoin .

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

Os tiques do relógio do sistema em uma taxa específica, chamada de 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 os tiques do relógio. para obter mais informações sobre a resolução de relógio e o tempo de espera, consulte a função de suspensão do Windows APIs do sistema.

Esse método não executa a bombeamento Standard COM e SendMessage.

Observação

Se você precisar fazer a suspensão em um thread que tem STAThreadAttribute , mas deseja executar a bomba padrão 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 para o período de tempo especificado.

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 é suspenso. Se o valor do argumento timeout for Zero, o thread entregará o restante de sua fração de tempo a qualquer thread de prioridade igual que esteja pronto para execução. Se não houver nenhum outro thread de prioridade igual pronto para execução, a execução do thread atual não será suspensa.

Exceções

O valor de timeout será negativo e não será igual a Infinite em milissegundos, ou será maior que MaxValue milissegundos.

Exemplos

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

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.
 */
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 pelo tempo especificado. Esse método altera o estado do thread para incluir WaitSleepJoin .

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

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

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

Observação

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

Aplica-se a