2012-06-12 33 views
0

我必須在循環中產生配置爲no的多個線程。的網站,然後每個線程都有多個子線程。完成所有線程後,我需要執行一些任務將數據保存到數據庫中。我如何知道是否所有任務都已完成。
我當前的代碼:在循環中產生多個線程,並知道什麼時候所有完成了某些任務

List<SocialDataConfig> configList = SetConfiguration(); 
foreach (SocialDataConfig config in configList) 
{ 
    new Thread(delegate() 
    { 
     FetchSocialData(config); 
    }).Start(); 
} 
// save fetched data into database and log fetched information in database 

private void FetchSocialData(SocialDataConfig config) 
{ 
    for (int i = 0; i < config.ThreadCount; i++) 
    { 
     Thread thread = new Thread(delegate() 
     { 
      FetchData(54764876, config); 
     }); 
     thread.Start(); 
    } 
} 

回答

0

而不是創建你自己的線程,你可以使用C#中的新任務庫。

然後,您可以使用這樣的:

int n = 10; 

// Construct started tasks 
Task<int>[] tasks = new Task<int>[n]; 
for (int i = 0; i < n; i++) 
{ 
    tasks[i] = Task<int>.Factory.StartNew(action, i); 
} 

// Wait for all the tasks to finish. 
Task.WaitAll(tasks); 

這裏是MSDN documentation on WaitAll有一個完整的例子。

+0

謝謝。這個解決方案爲我工作。 –

相關問題