我正在开始这样的话题:
nameOfThread = new Thread(() =>
{
//do stuff
});
nameOfThread.Start();
在这个匿名函数中的某个时刻,我打开了一个 WinSCP session ,如下所示:
using (Session session = new Session())
{
//do stuff
}
如果我像这样中止线程(从其他地方)nameOfThread.Abort()
,同时仍在 using
中做一些事情, session 是否在最后处理?
最佳答案
很可能会,但是 you can't be sure .
根据文档:
When this method [
Abort
] is invoked on a thread, the system throws aThreadAbortException
in the thread to abort it.
而且我们知道异常仍然会让 using
语句处理,正如它们应该的那样。 (给出和接受一些异常(exception))
另一方面,如果您可以优雅地结束线程,例如使用 CancellationTokenSource
,这对您的应用来说会好很多。它将对线程的实际终止和异常处理提供更多控制。
关于c# - 确实在 'using' block 中中止线程处理已使用的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53500763/