C# 4.0 在循环中生成多个线程,并知道何时完成所有任务

C# 4.0 在循环中生成多个线程,并知道何时完成所有任务,c#-4.0,C# 4.0,我必须在循环中为配置数量的站点生成多个线程,然后每个线程都有多个子线程。在完成所有线程后,我需要执行某些任务以将数据保存到数据库中。我如何知道所有任务是否都已完成。 我当前的代码: List<SocialDataConfig> configList = SetConfiguration(); foreach (SocialDataConfig config in configList) { new Thread(delegate() { FetchSo

我必须在循环中为配置数量的站点生成多个线程,然后每个线程都有多个子线程。在完成所有线程后,我需要执行某些任务以将数据保存到数据库中。我如何知道所有任务是否都已完成。
我当前的代码:

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();
    }
}
List configList=SetConfiguration();
foreach(配置列表中的SocialDataConfig配置)
{
新线程(委托()
{
FetchSocialData(配置);
}).Start();
}
//将获取的数据保存到数据库中,并将获取的信息记录到数据库中
私有void FetchSocialData(SocialDataConfig配置)
{
对于(int i=0;i
您可以使用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);
int n=10;
//构造已启动的任务
任务[]任务=新任务[n];
对于(int i=0;i

下面是一个完整的示例。

您可以使用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);
int n=10;
//构造已启动的任务
任务[]任务=新任务[n];
对于(int i=0;i
下面是一个完整的例子