我有当前代码:
class Program
{
private static void Main()
{
while (true)
{
try
{
Thread.CurrentThread.Abort();
}
catch (ThreadAbortException)
{
Console.WriteLine("Abort!");
Thread.ResetAbort();
}
Console.WriteLine("now waiting");
Console.ReadKey();
}
}
}
现在我知道 ResetAbort
方法应该可以防止 ThreadAbortException
继续重新抛出自身,即使 catch
语句正在捕获它,但我的问题是:
如果任何人都可以使用ResetAbort
方法,那么专门重新抛出异常的意义何在?
用户只需做
catch (ThreadAbortException ex)
{
Console.WriteLine("Abort!");
throw ex;
}
最佳答案
Thread.ResetAbort()
不适合一般用途。如果您不理解为什么会发生 thead 中止,它可能会导致意外行为。因此,可能为了使 ASP.NET 在共享主机环境中稳定,调用 Thread.ResetAbort()
SecurityPermissionFlag.ControlThread
权限
关于C# - 线程中止异常(Thread Abort Exception)重新抛出自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329670/