Thread.Sleep Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Suspende o thread atual durante o tempo especificado.
Sobrecargas
| Name | Description |
|---|---|
| Sleep(Int32) |
Suspende o fio atual durante o número especificado de milissegundos. |
| Sleep(TimeSpan) |
Suspende o thread atual durante o tempo especificado. |
Sleep(Int32)
Suspende o fio atual durante 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 durante os quais o fio está suspenso. Se o valor do millisecondsTimeout argumento for zero, a thread cede o restante da sua fatia temporal a qualquer thread de igual prioridade que esteja pronto a executar. Se não houver outros threads de igual prioridade prontos a ser executados, a execução do thread atual não é suspensa.
Exceções
O valor de time-out é negativo e não é igual a Infinite.
Exemplos
O exemplo seguinte utiliza o Sleep método para bloquear o fio principal da aplicação.
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.
Observações
A thread não será agendada para execução pelo sistema operativo durante o tempo especificado. Este método altera o estado do thread para incluir WaitSleepJoin.
Pode especificar Timeout.Infinite para o millisecondsTimeout parâmetro suspender o thread indefinidamente. No entanto, recomendamos que utilize outras System.Threading classes como Mutex, Monitor, EventWaitHandle, ou Semaphore em vez disso para sincronizar threads ou gerir recursos.
O relógio do sistema funciona a uma taxa específica chamada resolução do relógio. O tempo de espera real pode não ser exatamente o especificado, porque o tempo especificado será ajustado para coincidir com os tique-taques do relógio. Para 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.
Este método não realiza o pumping padrão COM e SendMessage.
Note
Se precisares de dormir num thread que tenha STAThreadAttribute, mas quiseres fazer o COM padrão e o MendMessage pumping, considera usar uma das sobrecargas do Join método que especifica um intervalo de timeout.
Aplica-se a
Sleep(TimeSpan)
Suspende o thread atual durante o 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
O tempo durante o qual o fio está suspenso. Se o valor do timeout argumento for Zero, a thread cede o restante da sua fatia de tempo para qualquer thread de igual prioridade que esteja pronto a ser executado. Se não houver outros threads de igual prioridade prontos a ser executados, a execução do thread atual não é suspensa.
Exceções
O valor de timeout é negativo e não é igual a Infinite em milissegundos, nem é maior que Int32.MaxValue milissegundos.
Exemplos
O exemplo seguinte usa a Sleep(TimeSpan) sobrecarga do método para bloquear o thread principal da aplicação cinco vezes, durante 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.
Observações
A thread não será agendada para execução pelo sistema operativo durante o tempo especificado. Este método altera o estado do thread para incluir WaitSleepJoin.
Pode especificar Timeout.InfiniteTimeSpan para o timeout parâmetro suspender o thread indefinidamente. No entanto, recomendamos que utilize outras System.Threading classes como Mutex, Monitor, EventWaitHandle, ou Semaphore em vez disso para sincronizar threads ou gerir recursos.
Esta sobrecarga de Sleep utiliza o número total de milissegundos inteiros em timeout. Frações de milissegundos são descartadas.
Este método não realiza o pumping padrão COM e SendMessage.
Note
Se precisares de dormir num thread que tenha STAThreadAttribute, mas quiseres fazer o COM padrão e o MendMessage pumping, considera usar uma das sobrecargas do Join método que especifica um intervalo de timeout.