Comparteix a través de


Thread.Sleep Método

Definición

Suspende el subproceso actual durante la cantidad de tiempo especificada.

Sobrecargas

Sleep(Int32)

Suspende el subproceso actual durante el número de milisegundos especificado.

Sleep(TimeSpan)

Suspende el subproceso actual durante la cantidad de tiempo especificada.

Sleep(Int32)

Source:
Thread.cs
Source:
Thread.cs
Source:
Thread.cs

Suspende el subproceso actual durante el número de milisegundos especificado.

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 durante los que el subproceso está suspendido. Si el valor del argumento millisecondsTimeout es cero, el subproceso cede el resto de su porción de tiempo a cualquier subproceso de idéntica prioridad que está listo para ejecutarse. Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual.

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 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.

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 se 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 que coincida 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 Suspensión de las API del sistema de Windows.

Este método no realiza la bomba COM y SendMessage estándar.

Nota

Si necesita dormir en un subproceso que tenga STAThreadAttribute, pero desea realizar el bombeo estándar COM y SendMessage, 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)

Source:
Thread.cs
Source:
Thread.cs
Source:
Thread.cs

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 la que el subproceso está suspendido. Si el valor del argumento timeout es Zero, el subproceso cede el resto de su porción de tiempo a cualquier subproceso de idéntica prioridad que está listo para ejecutarse. Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual.

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 sobrecarga del Sleep(TimeSpan) método para bloquear el subproceso principal de la aplicación cinco veces, durante dos 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.

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 los milisegundos fraccionarios.

Este método no realiza la bomba COM y SendMessage estándar.

Nota

Si necesita dormir en un subproceso que tenga STAThreadAttribute, pero desea realizar el bombeo estándar COM y SendMessage, considere la posibilidad de usar una de las sobrecargas del Join método que especifica un intervalo de tiempo de espera.

Se aplica a