gpt4 book ai didi

.net - 如何正确处理ThreadInterruptedException?

转载 作者:行者123 更新时间:2023-12-04 12:00:56 25 4
gpt4 key购买 nike

public void threadMethod() 
{
try
{
// do something
}
catch (ThreadInterruptedException e)
{
Console.WriteLine("[Net]", role, "Thread interrupted.");
n.CloseConnection();
}
finally
{
if (isAutenticated == false)
{
n.CloseConnection();
}

Dispatcher.Invoke(addMessage, "Network connection searching was disabled.");
DebuggerIX.WriteLine("[Net]", role, "Finished");
Dispatcher.Invoke(threadStoppedDel);
}
}

threadMethod 方法通过 System.Threading.Thread 运行。线程可能会被中断,因此可能会在 finally 块中抛出异常 ThreadInterruptedException ,对吗?我是否必须再次在 try-catch 中将块包含在 finally 中?

谢谢!

最佳答案

手动调用Thread.Interrupt中断线程时抛出线程中断异常. Windows 本身不会使用该方法中断您的线程。通常,您的程序将控制何时向线程发送中断信号(并非总是如此)。由于中断信号可用于某些流量控制,因此通常不会快速连续发送两次。

ThreadInterruptedException is thrown in the interrupted thread, but not until the thread blocks. If the thread never blocks, the exception is never thrown, and thus the thread might complete without ever being interrupted.



如果您的线程从不休眠或等待其他对象(进入 WaitSleepJoin 状态),您将永远不会看到抛出的异常。

保护您的线程应该是可以接受的。不要忘记也可以抛出 ThreadAbortException 异常,这些异常稍微普遍一些并且可以更频繁地抛出(应用程序正在关闭等)。

关于.net - 如何正确处理ThreadInterruptedException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3313575/

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