我必须在循环中为配置的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 :(得分: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的完整示例。