gpt4 book ai didi

c# - Thread.ResetAbort 的好处

转载 作者:太空狗 更新时间:2023-10-29 22:25:05 27 4
gpt4 key购买 nike

当通过 Thread.Abort() 取消线程时,会在调用 Thread.Abort() 的线程内抛出 ThreadAbortException。这导致线程立即停止其工作,并且异常在调用堆栈中冒泡,直到它离开线程的 main 方法。这会导致线程中止。

在调用 Thread.ResetAbort() 的线程主方法中,当线程由于退出其主线程而在 catch block 之后自行终止时,ExceptionHandler 对于 ThreadAbortException 有什么好处方法?

private void ThreadMainMethod( )
{
try
{
while(runningAllowed = true)
{
//Do some work here
}
}
catch ( ThreadAbortException )
{
Thread.ResetAbort( );
}
}

最佳答案

我能想到的一个场景是您想以一种可控的方式关闭线程。假设您有一个正在轮询某些资源的工作线程。如果应用程序的主线程在工作线程上调用 Abort,则会抛出 ThreadAbortException。然后,您可以在工作线程的启动方法中捕获该异常,调用 ResetAbort,然后通过释放资源、关闭打开的文件/连接等来完成该方法:

public void ThreadStarter()
{
try
{
RunWorkerLoop();
}
catch (ThreadAbortException)
{
Thread.ResetAbort();
}

// clean up and end gracefully

}

关于c# - Thread.ResetAbort 的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1339440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com