Tôi có đoạn mã sau từ cuốn sách "Lập trình đồng thời trên Windows":Tại sao CLR lại ném ThreadAbortException?
void Main()
{
try
{
try
{
Console.WriteLine("Inside Main Method");
Thread.CurrentThread.Abort();
}
catch(ThreadAbortException)
{
Console.WriteLine("Inside First Catch");
// Trying to swallow but CLR throws it again....
}
}
catch(ThreadAbortException)
{
Console.WriteLine("Inside Second Catch");
//Thread.ResetAbort();
}
}
Tôi muốn biết tại sao như CLR tái ném ThreadAbortException? Và nó tiếp tục làm cho đến khi tôi gọi "Thread.ResetAbort()". Thứ hai, có bất kỳ ngoại lệ nào được xác định bởi hệ thống khác, được xử lý đặc biệt từ CLR không?
Cũng lưu ý rằng mã, gọi Thread.ResetAbort() cần có sự cho phép đặc biệt để có thể làm như vậy. Vì vậy, nếu bạn đang lưu trữ CLR hoặc tạo một AppDomain bạn có thể sử dụng tính năng này để làm cho các chủ đề hủy bỏ xác định hơn. – Konstantin