Thread.ResetAbort Method in C#

A Thread class is responsible for creating and managing a thread in multi-thread programming. It provides a method known as ResetAbort which is responsible for canceling the abort request of the current thread. It prevents the ThreadAbortException from terminating the thread.

Syntax:

public static void ResetAbort ();

Exceptions:

  • ThreadStateException : If the Abort was not invoked on the current thread.
  • SecurityException : If the caller does not have the required security permission for the current thread.

Below programs illustrate the use of ResetAbort() method:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
    }
}

chevron_right


Output:

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

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
    }
}

chevron_right


Runtime Error:

Unhandled Exception:
System.Threading.ThreadStateException: Unable to reset abort because no abort was requested.

Reference:



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.