2008-10-26 168 views
0

我正在为应用程序构建线程管理器。线程管理器

我已经开始线程化,它的工作原理完全正常,但我希望能够以编程方式杀死它们或获取有关它们的信息。

有没有人有想法?

+0

请提供一些关于“获取关于它们的信息”的详细信息。 – 2008-10-26 21:44:26

+0

那么我有线程启动。不过,我需要线程管理,因为可以与线程交谈。杀了它等 http://pastebin.com/m11238dcf我的起始代码在这里。 – user31642 2008-10-26 21:57:15

回答

1

你可能看Thread.ThreadStateThread.Interrupt()Thread.Abort()(如乔恩斯基特指出,这不是一个首选方式停止线程)。

在应用程序中运行的所有线程的集合,使用

System.Diagnostics.Process.GetCurrentProcess().Threads

欲了解更多信息,你可能看看this example of a thread monitor

3

只需要简单的警告一下:不要使用Thread.Abort,除非你真的关闭了整个应用程序(或者你从中断的线程调用它,在这种情况下,你知道线程在做什么当时)。如果你真的想“杀死”线程,我会建议一个相当“软”的杀手 - 设置一个标志,并确保你在线程内定期测试该标志。

我的线程教程的一部分谈到了shutting down threads cleanly - 你可能会觉得它很有用。

0

严酷地杀死线程:不是一个好主意。你应该几乎总是与一个线程交流(即使是一个简单的挥发性比特标记也可以),并让线程自杀。杀死它是非常冒险的,并且可以在物体上留下锁等。

对于更一般的情况 - 你听说过parallel extensions?有计划在.NET 4.0中,包括并行LINQ扩展线程管理的一个全新的水平,等等