Suspender el hilo actual por la cantidad de tiempo especificada en C#

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *