Thread.Sleep Método

Definição

Suspende o thread atual para o período de tempo especificado.Suspends the current thread for the specified amount of time.

Sobrecargas

Sleep(Int32)

Suspende o thread atual no número especificado de milissegundos.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan)

Suspende o thread atual para o período de tempo especificado.Suspends the current thread for the specified amount of time.

Sleep(Int32)

Suspende o thread atual no número especificado de milissegundos.Suspends the current thread for the specified number of milliseconds.

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.The number of milliseconds for which the thread is suspended. 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.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Se não houver nenhum outro thread de prioridade igual pronto para execução, a execução do thread atual não será suspensa.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Exceções

O valor de tempo limite é negativo e não é igual a Infinite.The time-out value is negative and is not equal to Infinite.

Exemplos

O exemplo a seguir usa o método Sleep para bloquear o thread principal do aplicativo.The following example uses the Sleep method to block the application's main thread.

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.The thread will not be scheduled for execution by the operating system for the amount of time specified. Esse método altera o estado do thread para incluir WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Você pode especificar Timeout.Infinite para o parâmetro millisecondsTimeout para suspender o thread indefinidamente.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. No entanto, recomendamos que você use outras classes System.Threading, como Mutex, Monitor, EventWaitHandle ou Semaphore, em vez de sincronizar threads ou gerenciar recursos.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Os tiques do relógio do sistema em uma taxa específica, chamada de resolução do relógio.The system clock ticks at a specific rate called the clock resolution. 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.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. Para obter mais informações sobre a resolução de relógio e o tempo de espera, consulte o tópico função de suspensão .For more information on clock resolution and the waiting time, see the Sleep function topic. Esse método chama a função de suspensão das APIs de sistema do Windows.This method calls the Sleep function from the Windows system APIs.

Esse método não executa a bombeamento Standard COM e SendMessage.This method does not perform standard COM and SendMessage pumping.

Observação

Se você precisar fazer a suspensão em um thread que tem STAThreadAttribute, mas quiser executar a bomba padrão COM e SendMessage, considere usar uma das sobrecargas do método Join que especifica um intervalo de tempo limite.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Sleep(TimeSpan)

Suspende o thread atual para o período de tempo especificado.Suspends the current thread for the specified amount of time.

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.The amount of time for which the thread is suspended. Se o valor do argumento millisecondsTimeout 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.If the value of the millisecondsTimeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Se não houver nenhum outro thread de prioridade igual pronto para execução, a execução do thread atual não será suspensa.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Exceções

O valor de timeout será negativo e não será igual a Infinite em milissegundos, ou será maior que MaxValue milissegundos.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

Exemplos

O exemplo a seguir usa a sobrecarga do método Sleep(TimeSpan) para bloquear o thread principal do aplicativo cinco vezes, por dois segundos a cada vez.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

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 durante o período especificado.The thread will not be scheduled for execution by the operating system for the amount of time specified. Esse método altera o estado do thread para incluir WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Você pode especificar Timeout.InfiniteTimeSpan para o parâmetro timeout para suspender o thread indefinidamente.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. No entanto, recomendamos que você use outras classes System.Threading, como Mutex, Monitor, EventWaitHandle ou Semaphore, em vez de sincronizar threads ou gerenciar recursos.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Essa sobrecarga de Sleep usa o número total de milissegundos inteiros em timeout.This overload of Sleep uses the total number of whole milliseconds in timeout. Milissegundos fracionários são descartados.Fractional milliseconds are discarded.

Esse método não executa a bombeamento Standard COM e SendMessage.This method does not perform standard COM and SendMessage pumping.

Observação

Se você precisar fazer a suspensão em um thread que tem STAThreadAttribute, mas quiser executar a bomba padrão COM e SendMessage, considere usar uma das sobrecargas do método Join que especifica um intervalo de tempo limite.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Aplica-se a