Thread.Sleep Thread.Sleep Thread.Sleep Thread.Sleep Method

Definición

Suspende el subproceso actual durante la cantidad de tiempo especificada.Suspends the current thread for the specified amount of time.

Sobrecargas

Sleep(Int32) Sleep(Int32) Sleep(Int32) Sleep(Int32)

Suspende el subproceso actual durante el número de milisegundos especificado.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan)

Suspende el subproceso actual durante la cantidad de tiempo especificada.Suspends the current thread for the specified amount of time.

Sleep(Int32) Sleep(Int32) Sleep(Int32) Sleep(Int32)

Suspende el subproceso actual durante el número de milisegundos especificado.Suspends the current thread for the specified number of milliseconds.

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

Número de milisegundos durante los que el subproceso está suspendido.The number of milliseconds for which the thread is suspended. 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.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Excepciones

El valor de tiempo de espera es negativo y no es igual a Infinite.The time-out value is negative and is not equal to Infinite.

Ejemplos

En el ejemplo siguiente se usa el Sleep método para bloquear el subproceso principal de la aplicación.The following example uses the Sleep method to block the application's main thread.

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.
 */
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 subproceso no se programará para su ejecución por el sistema operativo durante el tiempo especificado.The thread will not be scheduled for execution by the operating system for the amount of time specified. Este método cambia el estado del subproceso para incluir WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Puede especificar Timeout.Infinite para el millisecondsTimeout parámetro para suspender el subproceso indefinidamente.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. Sin embargo, se recomienda utilizar otros System.Threading clases como Mutex, Monitor, EventWaitHandle, o Semaphore en su lugar para sincronizar subprocesos o administrar los recursos.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Los ciclos de reloj del sistema a un ritmo específico denomina la resolución del reloj.The system clock ticks at a specific rate called the clock resolution. El tiempo de espera real podría no ser exactamente el tiempo de espera, ya que el tiempo de espera especificado se ajustará para que coincida con los ciclos de reloj.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. Para obtener más información sobre la resolución del reloj y el tiempo de espera, vea el suspensión función tema.For more information on clock resolution and the waiting time, see the Sleep function topic. Este método llama a la suspensión función desde las API del sistema de Windows.This method calls the Sleep function from the Windows system APIs.

Este método no realiza suministro de SendMessage y COM estándar.This method does not perform standard COM and SendMessage pumping.

Nota

Si se debe al modo de suspensión en un subproceso que tiene STAThreadAttribute, pero desea bombeando SendMessage y COM estándar, puede usar una de las sobrecargas de los Join método que especifica un intervalo de tiempo de espera.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan)

Suspende el subproceso actual durante la cantidad de tiempo especificada.Suspends the current thread for the specified amount of time.

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

Cantidad de tiempo durante la que el subproceso está suspendido.The amount of time for which the thread is suspended. Si el valor del argumento millisecondsTimeout 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.If the value of the millisecondsTimeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Si no hay ningún otro subproceso de igual prioridad que está listo para ejecutarse, no se suspende la ejecución del subproceso actual.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Excepciones

El valor de timeout es negativo y no es igual a Infinite en milisegundos, o es superior a MaxValue milisegundos.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

Ejemplos

En el ejemplo siguiente se usa el Sleep(TimeSpan) sobrecarga del método para bloquear el subproceso principal de la aplicación cinco veces, durante dos segundos cada vez.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

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.
 */
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 subproceso no se programará para su ejecución por el sistema operativo durante el tiempo especificado.The thread will not be scheduled for execution by the operating system for the amount of time specified. Este método cambia el estado del subproceso para incluir WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Puede especificar Timeout.InfiniteTimeSpan para el timeout parámetro para suspender el subproceso indefinidamente.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. Sin embargo, se recomienda utilizar otros System.Threading clases como Mutex, Monitor, EventWaitHandle, o Semaphore en su lugar para sincronizar subprocesos o administrar los recursos.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Esta sobrecarga de Sleep utiliza el número total de milisegundos enteros en timeout.This overload of Sleep uses the total number of whole milliseconds in timeout. Se descartan las fracciones de milisegundos.Fractional milliseconds are discarded.

Este método no realiza suministro de SendMessage y COM estándar.This method does not perform standard COM and SendMessage pumping.

Nota

Si se debe al modo de suspensión en un subproceso que tiene STAThreadAttribute, pero desea bombeando SendMessage y COM estándar, puede usar una de las sobrecargas de los Join método que especifica un intervalo de tiempo de espera.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Se aplica a