Thread.Sleep Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.