当前位置 : 主页 > 编程语言 > c语言 >

c# – 如何判断一个线程是否已成功退出?

来源:互联网 收集:自由互联 发布时间:2021-06-25
根据 MSDN Documentation for ThreadState,可以通过以下两种方式之一进入Stopped状态:线程退出或线程被中止. 是否有一些机制通过正常退出来判断线程是否已进入Stopped状态?谢谢! 线程可以通
根据 MSDN Documentation for ThreadState,可以通过以下两种方式之一进入Stopped状态:线程退出或线程被中止.

是否有一些机制通过正常退出来判断线程是否已进入Stopped状态?谢谢!

线程可以通过以下几种方式达到Stopped状态:

>它的主要方法可以退出而没有任何错误.
>线程上的未捕获异常可以终止它.
>另一个线程可以调用Thread.Abort(),这将导致在该线程上抛出ThreadAbortException.

我不知道你是否想要区分这三种状态,但如果你真正感兴趣的是线程是否成功完成,我建议使用某种类型的共享数据结构(同步字典可以工作)线程的主循环在终止时更新.您可以使用ThreadName属性作为此共享字典中的键.对终止状态感兴趣的其他线程可以从该字典中读取以确定线程的最终状态.

在查看MSDN documentation之后,您应该能够使用ThreadState属性区分外部中止的线程.当线程响应Abort()调用时,应将其设置为ThreadState.Aborted.但是,除非您控制运行的线程代码,否则我认为您不能区分刚退出其主方法的线程与以异常终止的线程.

但请记住,如果您控制启动线程的代码,您始终可以替换自己的方法,该方法在内部调用运行主线程逻辑的代码并在那里注入异常检测(如上所述).

网友评论