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
下面是一个完整的例子