Thread類負責在multi-thread編程中創建和管理線程。它提供了一種稱為ResetAbort的方法,該方法負責取消當前線程的中止請求。它防止ThreadAbortException終止線程。
用法:
public static void ResetAbort ();
異常:
- ThreadStateException:如果未在當前線程上調用中止。
- SecurityException:如果調用者沒有當前線程所需的安全權限。
以下示例程序旨在說明ResetAbort()方法的使用:
示例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");
}
}
輸出:
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
示例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");
}
}
運行時錯誤:
Unhandled Exception:
System.Threading.ThreadStateException: Unable to reset abort because no abort was requested.
參考:
相關用法
注:本文由純淨天空篩選整理自ankita_saini大神的英文原創作品 Thread.ResetAbort Method in C#。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。