2015-05-15 63 views
-2

在C#中的IM創造我的主題是這樣的:檢查多少個線程在運行/退出線程

void LaunchThread(string url, string search, string regexstring) 
{  
    new Thread(delegate() 
    { 
     Scrape(url, search, regexstring,false); 

    }).Start(); 

} 

我用一個int變量遵循多少線程當前正在運行,但我有一種感覺它可以有時有點靠不住,不準確

我有2個問題(因爲當你的時間上存在多少支票):

  1. 有一個變量,它會告訴我很多線程如何目前運行
  2. 有沒有辦法關閉/退出所有線程中途不等待他們完成?

非常感謝這樣的IM新的C#和多任務作爲一個整體

+0

是的,有。是的,這也是可能的。檢查msdn。 –

+0

@AdrianoRepetti這不是很有幫助,我想...這裏的很多問題都可以用「檢查文檔」來解答...... – imlokesh

+0

在使用它之前,您需要了解更多關於.NET線程的知識。否則,你正在做錯事的方式。不要手動啓動和跟蹤線程,而只需讓ThreadPool處理它。對於2,您可以使用'ManualResetEventSlim'。 – Vlad

回答

0
  1. 如果你感興趣的只有你已經開始,保持一個計數器像你描述的應該正常工作的線程。只要確保在獲取/更改時使用正確的鎖定。
  2. 如果您在工作線程中所做的工作涉及到一個循環,您可以向循環添加邏輯來檢查變量是否應該繼續運行。你可以從另一個線程設置這個變量(同樣,假設鎖定正確)。
+0

不幸的是,它不涉及循環,但其中包含一個Web客戶端,可能需要幾秒鐘才能完成 - 甚至幾分鐘。 –