En C#, un método Sleep() suspende temporalmente la ejecución actual del subproceso durante milisegundos específicos, de modo que otros subprocesos puedan tener la oportunidad de iniciar la ejecución, o pueden obtener la CPU para la ejecución. Hay dos métodos en la lista de sobrecarga de Thread.Sleep
Método de la siguiente manera:
- Dormir (Int32)
- Dormir (intervalo de tiempo)
Dormir (Int32)
Este método suspende el subproceso actual durante el número de milisegundos del descriptor. Este método generará una excepción ArgumentOutOfRangeException si el valor de tiempo de espera es negativo y no es igual a infinito.
Sintaxis:
public static void Sleep (int millisecondsTimeout);
Aquí, millisecondsTimeout es una cantidad de milisegundos durante los cuales se suspende el subproceso. Si el valor del argumento milisegundosTiempo de espera es cero, el subproceso renuncia al resto de su intervalo de tiempo a cualquier subproceso de igual prioridad que esté listo para ejecutarse. Si no hay otros subprocesos de igual prioridad que estén listos para ejecutarse, la ejecución del subproceso actual no se suspende.
Ejemplo:
// C# program to illustrate the // concept of Sleep(Int32) method using System; using System.Threading; class ExampleofThread { // Non-Static method public void thread1() { for (int x = 0; x < 2; x++) { Console.WriteLine("Thread1 is working"); // Sleep for 4 seconds // Using Sleep() method Thread.Sleep(4000); } } // Non-Static method public void thread2() { for (int x = 0; x < 2; x++) { Console.WriteLine("Thread2 is working"); } } } // Driver Class public class ThreadExample { // Main method public static void Main() { // Creating instance for mythread() method ExampleofThread obj = new ExampleofThread(); // Creating and initializing threads Thread thr1 = new Thread(new ThreadStart(obj.thread1)); Thread thr2 = new Thread(new ThreadStart(obj.thread2)); thr1.Start(); thr2.Start(); } }
Producción:
Thread1 is working Thread2 is working Thread2 is working Thread1 is working
Explicación: al usar Thread.Sleep(4000);
el método thread1 , hacemos que el subproceso thr1 duerma durante 4 segundos, por lo que entre 4 segundos, el subproceso thr2 tiene la oportunidad de ejecutarse después de 4 segundos, el subproceso thr1 reanuda su funcionamiento.
Dormir (intervalo de tiempo)
Este método suspende el subproceso actual durante el tiempo descrito. Este método generará una ArgumentOutOfRangeException si el valor del tiempo de espera es negativo y no es igual al infinito en milisegundos, o es mayor que MaxValue en milisegundos.
Sintaxis:
public static void Sleep (TimeSpan timeout);
Aquí, el tiempo de espera es la cantidad de tiempo durante el cual se suspende el subproceso. Si el valor del argumento milisegundosTiempo de espera es cero, el subproceso renuncia al resto de su intervalo de tiempo a cualquier subproceso de igual prioridad que esté listo para ejecutarse. Si no hay otros subprocesos de igual prioridad que estén listos para ejecutarse, la ejecución del subproceso actual no se suspende.
Ejemplo:
// C# program to illustrate the // concept of Sleep(TimeSpan) using System; using System.Threading; class GFG { // Main method static void Main() { // Set the timeout value, i.e. 3 seconds TimeSpan timeout = new TimeSpan(0, 0, 3); for (int k = 0; k < 3; k++) { Console.WriteLine("Thread is" + " sleeping for 3 seconds."); // Using Sleep(TimeSpan) method Thread.Sleep(timeout); } Console.WriteLine("Main thread exits"); } }
Producción:
Thread is sleeping for 3 seconds. Thread is sleeping for 3 seconds. Thread is sleeping for 3 seconds. Main thread exits
Referencia:
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA