如何使用任务处理多线程请求?

时间:2018-07-31 13:29:16

标签: c# asp.net multithreading

嗨,我有一个List<List<string>>,假设我们说它为batchList,现在我想先处理四个批次,然后再处理另外两个批次,我该如何实现这一目标

代码如下:

List<List<string>> termsBatches = searchTerms.Split(2).ToList(); //batchList Count is 6
List<Task> taskList = new List<Task>(); //initialize task list for wait
foreach (List<string> batch in termsBatches)
{

 Task<SolrSearchResults> task = Task<SolrSearchResults>.Factory.StartNew(()=>
 {
      //Do Somethisng
 });

 taskList.Add(task);
 Task.WhenAll(taskList.ToArray());
 foreach (Task<SolrSearchResults> result in taskList)
 {
      //Process result
 }

}

在处理了四个请求的结果后,我想触发其他两个请求,那么我该如何实现呢?

1 个答案:

答案 0 :(得分:0)

如果您想在物品到达时处理它们并使用多线程,则应该考虑使用Microsoft的Reactive Framework(NuGet“ System.Reactive”)。

然后,假设您拥有方法class ReporterSerializer(serializers.ModelSerializer): article = serializers.StringRelatedField(source='article_set', many=True) class Meta: model = Reporter fields = '__all__',则可以执行以下操作:

many=True