当前位置: 首页 > wzjs >正文

网站规划与网页设计总结一个新公众号怎么吸粉

网站规划与网页设计总结,一个新公众号怎么吸粉,北京网站开发制作公司,wordpress 修改titleTask.WhenAll 是 .NET 中用于并行等待多个异步任务的核心方法。它可以让多个异步操作同时执行,然后一次性等待所有任务完成,而不是逐个等待。async void Main() {// 准备数据:[1,2,3,4,5,6,7,8,9,10]var inputs Enumerable.Range(1,10).ToAr…

Task.WhenAll 是 .NET 中用于并行等待多个异步任务的核心方法。它可以让多个异步操作同时执行,然后一次性等待所有任务完成,而不是逐个等待。

async void Main()
{// 准备数据:[1,2,3,4,5,6,7,8,9,10]var inputs = Enumerable.Range(1,10).ToArray();var outputs = new List<int>();// ❌ 错误方式:串行执行(一个接一个)//foreach (var element in inputs)//{//    var result = await HeavyJobAsync(element);  // 等待当前任务完成//    outputs.Add(result);                       // 再开始下一个//}// 总耗时:10 × 200ms = 2000ms// ✅ 正确方式:使用 Task.WhenAll 并行执行var tasks = new List<Task<int>>();// 第一步:启动所有任务(不等待结果)foreach (var element in inputs){// 关键:这里创建并启动任务,但不 await,任务立即开始在后台执行tasks.Add(HeavyJobAsync(element));}// 第二步:使用 Task.WhenAll 等待所有任务完成await Task.WhenAll(tasks);  // 🎯 重点!// 第三步:收集所有任务的结果outputs = tasks.Select(t => t.Result).ToList();outputs.Dump();  // 输出:[1,4,9,16,25,36,49,64,81,100]
}// 模拟耗时异步操作
async Task<int> HeavyJobAsync(int input)
{await Task.Delay(200);  // 模拟200ms的工作return input * input;   // 返回平方值
}

分析

方式1的问题:
foreach (var element in inputs)
{var result = await HeavyJobAsync(element);  //这里会"阻塞"// 程序会在这里停下来等待,直到HeavyJobAsync完成// 然后才会执行下一次循环
}
方式2的优势:
// 第一步:快速启动所有任务
foreach (var element in inputs)
{tasks.Add(HeavyJobAsync(element));  // 只是启动,不等待// HeavyJobAsync立即返回Task对象,实际工作在后台进行
}// 第二步:统一等待所有任务完成
await Task.WhenAll(tasks);  // 一次性等待所有任务

Task.WhenAll 的不同用法

1. 有返回值的任务

// 启动多个任务
var task1 = GetDataAsync(1);
var task2 = GetDataAsync(2);
var task3 = GetDataAsync(3);// 等待所有任务并获取结果
int[] results = await Task.WhenAll(task1, task2, task3);
// results = [result1, result2, result3] 按顺序排列

2. 无返回值的任务

// 启动多个任务
var task1 = SaveDataAsync(data1);
var task2 = SaveDataAsync(data2);
var task3 = SaveDataAsync(data3);// 等待所有任务完成
await Task.WhenAll(task1, task2, task3);

3. 动态任务集合

// 动态创建任务列表
var tasks = urls.Select(url => DownloadAsync(url)).ToList();// 等待所有下载完成
string[] contents = await Task.WhenAll(tasks);

使用场景

同时调用多个Web服务、同时读写多个文件、数据库操作:并行执行多个查询。

Task.WhenAny vs Task.WhenAll 核心区别

特性Task.WhenAllTask.WhenAny
等待策略等待所有任务完成等待任何一个任务完成
完成条件最慢的任务完成时最快的任务完成时
返回结果所有任务的结果数组第一个完成的任务对象
用途并行处理,需要所有结果竞争场景,只要第一个结果

http://www.dtcms.com/wzjs/458443.html

相关文章:

  • 个人网站带后台源码北京seo排名收费
  • 毕设网站代做一般预算多少钱网络推广员是什么
  • 做视频分享网站百度指数官网
  • 去哪个网站做农产品推广郑州网络营销推广机构
  • 建立一个属于自己的网站如何在百度推广
  • 网站建设合作方案北京优化网站推广
  • 网站后台 教程游戏搬砖工作室加盟平台
  • 北京市网站建设公司排名网上营销方式和方法
  • 做网站用最新软件品牌策划公司排名
  • app定制公司如何找客户长沙专业竞价优化首选
  • 宠物网站建设报告百度移动点击排名软件
  • 自己做的网站上传到外包公司和劳务派遣的区别
  • 华龙网重庆新闻seo排名优化培训网站
  • 开源wiki做网站seo搜索引擎优化就业前景
  • 番禺网站建设外包怎样创建自己的电商平台
  • 磁力离心泵做网站seo课程哪个好
  • 国外做美食视频网站网络优化报告
  • 可以做的电影网站为什么外包会是简历污点
  • 浙江建设厅官方网站报名b证腾讯广告推广怎么做
  • 专业做网站的公司有哪些网站推广的优化
  • 用jsp做的网站源代码公司的公关
  • 电子商务网页设计与网站建设论文谁有恶意点击软件
  • 电子商务网站面临的安全隐患有哪些网络营销事件
  • 网站建设网络公司看b站二十四小时直播间
  • 做网站自己网站收录工具
  • 帝国cms网站搬家网络营销渠道策略研究
  • 权4网站怎么做龙网网络推广软件
  • 彩票网站模板源码河南智能seo快速排名软件
  • 有哪些开发网站公司百度关键词热度查询
  • 服务器做的网站 怎么使用seo软文代写