Thread.Sleep Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Suspende el subproceso actual durante la cantidad de tiempo especificada.
Sobrecargas
| Nombre | Description |
|---|---|
| Sleep(Int32) |
Suspende el subproceso actual para el número especificado de milisegundos. |
| Sleep(TimeSpan) |
Suspende el subproceso actual durante la cantidad de tiempo especificada. |
Sleep(Int32)
Suspende el subproceso actual para el número especificado de milisegundos.
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
Número de milisegundos para los que se suspende el subproceso. Si el valor del millisecondsTimeout argumento es cero, el subproceso renuncia el resto de su segmento de tiempo a cualquier subproceso de la misma prioridad que esté listo para ejecutarse. Si no hay ningún otro subproceso de igual prioridad que esté listo para ejecutarse, la ejecución del subproceso actual no se suspende.
Excepciones
El valor de tiempo de espera es negativo y no es igual a Infinite.
Ejemplos
En el ejemplo siguiente se usa el Sleep método para bloquear el subproceso principal de la aplicación.
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.
Comentarios
El sistema operativo no programará la ejecución del subproceso durante el período de tiempo especificado. Este método cambia el estado del subproceso para incluir WaitSleepJoin.
Puede especificar Timeout.Infinite para que el millisecondsTimeout parámetro suspenda el subproceso indefinidamente. Sin embargo, se recomienda usar otras System.Threading clases como Mutex, Monitor, EventWaitHandleo Semaphore en su lugar para sincronizar subprocesos o administrar recursos.
El reloj del sistema marca a una velocidad específica denominada resolución del reloj. Es posible que el tiempo de espera real no sea exactamente el tiempo de espera especificado, ya que el tiempo de espera especificado se ajustará para coincidir con los tics del reloj. Para obtener más información sobre la resolución del reloj y el tiempo de espera, consulte la función Sleep desde las API del sistema Windows.
Este método no realiza la bomba COM y SendMessage estándar.
Note
Si necesita dormir en un subproceso que tenga STAThreadAttribute, pero desea realizar la bomba COM y SendMessage estándar, considere la posibilidad de usar una de las sobrecargas del Join método que especifica un intervalo de tiempo de espera.
Se aplica a
Sleep(TimeSpan)
Suspende el subproceso actual durante la cantidad de tiempo 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
Cantidad de tiempo durante el que se suspende el subproceso. Si el valor del timeout argumento es Zero, el subproceso renuncia el resto de su segmento de tiempo a cualquier subproceso de igual prioridad que esté listo para ejecutarse. Si no hay ningún otro subproceso de igual prioridad que esté listo para ejecutarse, la ejecución del subproceso actual no se suspende.
Excepciones
El valor de timeout es negativo y no es igual a Infinite en milisegundos, o es mayor que Int32.MaxValue milisegundos.
Ejemplos
En el ejemplo siguiente se usa la Sleep(TimeSpan) sobrecarga del método para bloquear el subproceso principal de la aplicación cinco veces, durante dos 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.
Comentarios
El sistema operativo no programará la ejecución del subproceso durante el período de tiempo especificado. Este método cambia el estado del subproceso para incluir WaitSleepJoin.
Puede especificar Timeout.InfiniteTimeSpan para que el timeout parámetro suspenda el subproceso indefinidamente. Sin embargo, se recomienda usar otras System.Threading clases como Mutex, Monitor, EventWaitHandleo Semaphore en su lugar para sincronizar subprocesos o administrar recursos.
Esta sobrecarga de Sleep usa el número total de milisegundos enteros en timeout. Se descartan milisegundos fraccionarios.
Este método no realiza la bomba COM y SendMessage estándar.
Note
Si necesita dormir en un subproceso que tenga STAThreadAttribute, pero desea realizar la bomba COM y SendMessage estándar, considere la posibilidad de usar una de las sobrecargas del Join método que especifica un intervalo de tiempo de espera.