gpt4 book ai didi

c# - 如何判断线程是否成功退出?

转载 作者:行者123 更新时间:2023-11-30 14:20:41 27 4
gpt4 key购买 nike

根据MSDN Documentation for ThreadState ,可以通过以下两种方式之一进入停止状态:线程退出,或线程被中止。

是否有某种机制可以通过正常退出来判断一个线程是否进入了Stopped状态?谢谢!

最佳答案

线程可以通过几种方式进入停止状态:

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

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

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

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

关于c# - 如何判断线程是否成功退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001973/

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