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