Thread.Sleep Método

Definición

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.

Se aplica a