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 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)
- Origem:
- Thread.cs
- Origem:
- Thread.cs
- Origem:
- Thread.cs
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 de main 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.
*/
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 pela quantidade de tempo especificada. 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, MonitorEventWaitHandle, ouSemaphore, 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 Suspensão das APIs do sistema Windows.
Esse método não executa o bombeamento PADRÃO e SendMessage.
Observação
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)
- Origem:
- Thread.cs
- Origem:
- Thread.cs
- Origem:
- Thread.cs
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
é negativo e não é igual a Infinite em milissegundos ou é maior que Int32.MaxValue milissegundos.
Exemplos
O exemplo a seguir usa a sobrecarga do Sleep(TimeSpan) método para bloquear o thread de main do aplicativo cinco vezes, por dois segundos 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.
*/
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 pela quantidade de tempo especificada. 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, MonitorEventWaitHandle, ouSemaphore, em vez disso, para sincronizar threads ou gerenciar recursos.
Essa sobrecarga de Sleep usa 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 e SendMessage.
Observação
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.