首页 > 编程语言 > 详细

多线程,控制Task的20个并发数量,全部子线程执行完后,获取所有返回的值

时间:2021-07-21 09:26:46      阅读:27      评论:0      收藏:0      [点我收藏+]

//控制下Task的20个并发数量,
List<Task> taskList = new List<Task>();
for (int i = 0; i < 10000; i++)
{
int k = i;
if (taskList.Count(t => t.Status != TaskStatus.RanToCompletion) >= 20)
{
Task.WaitAny(taskList.ToArray());
taskList = taskList.Where(t => t.Status != TaskStatus.RanToCompletion).ToList();
}
taskList.Add(Task.Run(() =>
{
Console.WriteLine($"This is {k} running ThreadId={Thread.CurrentThread.ManagedThreadId.ToString("00")}");
Thread.Sleep(2000);
}));
}
//taskList 全部子线程执行完后,获取所有返回的值
for(int i=0;i<taskList .count();i++)
{
var result= taskList[i].result;
}

多线程,控制Task的20个并发数量,全部子线程执行完后,获取所有返回的值

原文:https://www.cnblogs.com/csj007523/p/15037685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!