我正在为应用程序构建一个线程管理器。
我已经开始使用线程并且它完全正常但我希望能够以编程方式杀死它们或获取有关它们的信息。
有没有人有想法?
答案 0 :(得分:3)
只需一句警告:不要使用Thread.Abort
,除非你真的关闭整个应用程序(或者你是从你正在中止的线程中调用它,在这种情况下你知道什么线程正在做的时间)。如果你真的想要“杀死”线程,我会建议一个相当“软”的杀戮 - 设置一个标志,并确保你在线程中定期测试那个标志。
我的线程教程的一部分讨论了shutting down threads cleanly - 您可能会发现它很有用。
答案 1 :(得分:1)
您可以查看Thread.ThreadState
,Thread.Interrupt()
和Thread.Abort()
(正如Jon Skeet所指出的,这不是停止线程的首选方式)。
对于应用程序中运行的所有线程的集合,请使用
System.Diagnostics.Process.GetCurrentProcess().Threads
。
有关详情,请查看this example of a thread monitor。
答案 2 :(得分:0)
严厉地杀死线索:不是一个好主意。你应该几乎总是与一个线程进行通信(即使是一个简单的易失性位标志也可以),让线程自杀。杀死它是非常危险的,可以锁定物体等。
对于更一般的情况 - 你听说过parallel extensions吗?为.NET 4.0规划了一个全新的线程管理级别,包括并行LINQ扩展等。