Método Thread.ResetAbort en C#

Una clase Thread es responsable de crear y administrar un hilo en la programación multihilo. Proporciona un método conocido como ResetAbort que es responsable de cancelar la solicitud de cancelación del hilo actual. Evita que ThreadAbortException finalice el hilo.

Sintaxis:

public static void ResetAbort ();

Excepciones:

  • ThreadStateException : si no se invocó Abort en el subproceso actual.
  • SecurityException : si la persona que llama no tiene el permiso de seguridad requerido para el subproceso actual.

Los siguientes programas ilustran el uso del método ResetAbort() :

Ejemplo 1:

// C# program to illustrate the
// use of ResetAbort method
using System;
using System.Threading;
using System.Security.Permissions;
  
class MyThread {
  
    // Method Job
    public void Job()
    {
        try {
  
            for (int I = 0; I < 10; I++) 
            {
                Console.WriteLine(" My Thread is working..!");
                Thread.Sleep(100);
            }
        }
  
        catch (ThreadAbortException e) 
        {
            Console.WriteLine("Caught ThreadAbortException and reset");
            Console.WriteLine("Ex message: {0}", e.Message);
            Thread.ResetAbort();
        }
  
        Console.WriteLine("Thread is alive and working..!");
        Thread.Sleep(2000);
        Console.WriteLine("Thread is finished its working..!");
    }
}
  
// Driver Class
class GFG {
  
    // Main Method
    public static void Main()
    {
        MyThread obj = new MyThread();
        Thread T = new Thread(obj.Job);
        T.Start();
        Thread.Sleep(100);
        Console.WriteLine("Aborting thread");
        T.Abort();
        T.Join();
        Console.WriteLine("Main thread ends");
    }
}

Producción:

My Thread is working..!
Aborting thread
Caught ThreadAbortException and reset
Ex message: Thread was being aborted.
Thread is alive and working..!
Thread is finished its working..!
Main thread ends

Ejemplo 2:

// C# program to illustrate the
// use of ResetAbort method
using System;
using System.Threading;
  
// Driver Class
public class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // Creating and initializing  threads
        Thread thr = new Thread(Job);
  
        // Start the execution of Thread
        thr.Start();
  
        // Reset abort request
        // Using ResetAbort method
        Thread.ResetAbort();
    }
  
    public static void Job()
    {
        Console.WriteLine("Hello");
    }
}

Error de tiempo de ejecución:

Excepción no controlada:
System.Threading.ThreadStateException: no se puede restablecer la cancelación porque no se solicitó ninguna cancelación.

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 *