2008-10-26 98 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擴展線程管理的一個全新的水平,等等