2014-06-23 92 views
0

我開發了一個多線程應用程序,它在循環內部啓動線程。關閉線程c#.net

我是否需要擔心線程的關閉/終止或它會自動關閉。

我正在每一秒創建新線程,並且它正在連續運行,如下所示。

Run()方法正在通過windows服務進行調用。

public void Run(int count) 
{ 
     for(i=count i<count ;i++) 
     { 
      ThreadTest t=new ThreadTest(); 
      Thread newThread = new Thread(t.DoWork); 
      newThread.Start(); 
     } 
} 

Class ThreadTest 
{ 

    Public void DoWork() 
    { 
    // do some calculation and update database fields. 
    } 

} 
+3

只是一個評論:像這樣啓動線程通常是一個壞主意,因爲每個新線程都需要花費大量開銷。如果可能的話,使用線程池來分攤線程管理的成本。 –

+1

我推薦使用ThreadPool。 Brian提到手動線程有相當大的開銷。包括每次獲得分配的1MB堆棧。線程池將彙集未使用的線程並重用它們,而無需在需要新線程時重新分配它們。 –

+0

@BradleyUffner但在線程池線程上運行我需要使用ThreadPool.QueueUserWorkItem並且它不會立即啓動線程可能會有1/2秒的延遲。我需要儘快開始線程。 – FatalError

回答

1

線程在您指定的函數返回時終止。如果你設法創建線程的速度超過了它們,你將累積運行線程並最終耗盡系統資源。是否真的有必要有無數的線程?