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:
// 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" ); } } |
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:
// 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" ); } } |
Runtime Error:
Unhandled Exception:
System.Threading.ThreadStateException: Unable to reset abort because no abort was requested.
Reference: