1

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

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();
    }
}
4

1 回答 1

1

您可以使用 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);

这是WaitAll上的 MSDN 文档以及完整的示例。

于 2012-06-12T09:47:26.623 回答