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: