2012-05-08 55 views
1

我必須說它可能是一個不好的模式,但在我的沙箱中,我創建了一個接口,每次單擊時都會調用後臺服務(啓動線程並保持活動)一個按鈕。我如何獲得所有正在運行的線程的列表

這很好,因爲我可以創建一個混亂的情況,並找出環境如何處理這個。

但是,否則,我正面臨一個問題:如何獲取當前正在運行的所有線程並全部殺死它們。調用GB或其他東西。

回答

3

我假設你threads-要在運行,你通過一些特殊的機制開始,對線程的列表不希望的所有運行列表?

如果是這樣的話,你可以做這樣的事情,你就這些線程:

List<Thread> myThreads = new List<Thread>(); 

public void StartAThread() { 
    Thread t = new Thread(... whatever ...); 
    myThreads.Add(t); 
    t.Start(); 
} 

現在,假設你要殺死極端偏見這些線程 - 也就是你希望他們死了,現在,你不關心的連鎖離開工作做了一半的效果,你可以這樣做:

foreach (var t in myThreads) 
    t.Abort(); 
+2

+1 [極端偏見終止(HTTP://en.wikipedia .ORG /維基/ Terminate_with_ extreme_prejudice) – Bob2Chiv

+0

是的!我對此很難過。但我的問題是通過某種方式來反思或發現什麼是強制垃圾收集器。 – Custodio

+0

你不需要強制垃圾收集器。一旦無法從任何正在運行的線程中引用對象,該對象就有資格使用GC並將自動清理。關鍵在於第一部分 - 確保任何正在運行的線程都無法訪問這些對象。 –

相關問題