异步方法的并发执行

2024-03-30

使用 async/await 模型,我有一个方法可以对 Web 服务进行 3 次不同的调用,然后返回结果的并集。

var result1 = await myService.GetData(source1);
var result2 = await myService.GetData(source2);
var result3 = await myService.GetData(source3);

allResults = Union(result1, result2, result3);

使用典型的等待,这 3 个调用将彼此同步执行。我将如何让它们同时执行并在完成时加入结果?


我将如何让它们并行执行并在完成时加入结果?

The simplest方法只是创建所有任务然后等待它们:

var task1 = myService.GetData(source1);
var task2 = myService.GetData(source2);
var task3 = myService.GetData(source3);

// Now everything's started, we can await them
var result1 = await task1;
var result1 = await task2;
var result1 = await task3;

您也可以考虑Task.WhenAll http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.whenall%28v=vs.110%29.aspx。您需要考虑多个任务失败的可能性......使用上面的代码您不会观察到失败task3例如,如果task2失败 - 因为你的异步方法将从中传播异常task2在你等待之前task3.

我在这里并不是建议特定的策略,因为这将取决于您的具体情况。您可能只关心成功/失败和日志记录one失败的原因,在这种情况下上面的代码就可以了。否则,您可能会将延续附加到原始任务以记录all例如,例外情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步方法的并发执行 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 在 Raspberry Pi 中解码视频而不使用 OpenMAX?

    我正在寻找在 Raspberry Pi 上解码视频的示例directly 不使用 OpenMAX 这解释了多媒体软件的不同层 还有一个此处未显示的附加层 即 MMAL https github com raspberrypi userlan
  • 远程拒绝主控 -> 主控(预接收挂钩拒绝)

    我正在使用 Rails 3 2 当我尝试推送到 heroku 时收到错误 git push heroku master Counting objects 496 done Delta compression using up to 8 th
  • 应用程序中的 Firestore 查询给出权限被拒绝,而模拟器工作正常

    在我的基于 Firestore 的应用程序中 我使用以下查询来检索一些数据 FirebaseFirestore getInstance collection events document eventId collection instan
  • 如何只获取用户路径变量?

    Echo PATH 回报system路径变量 user路径变量 如何只得到user路径变量 The system PATH变量的值存储在 Windows 注册表中Path类型的REG EXPAND SZ包含对环境变量的引用 例如 Syste
  • 如何在 JSON 文件中进行搜索?

    如何创建一个搜索表单来搜索 JSON 文件中输入的术语 因此 如果搜索词等于位置对象内的标题 它应该返回该对象信息 如果没有匹配 则向用户反馈没有找到项目 我创建了一个搜索输入
  • 当您不需要将某些内容定义为动态来 with-redefs 时,将某些内容定义为动态的意义何在?

    在我看来 这with redefs可以做一切binding动态符号可以做到 只是它没有需要的限制 dynamic元数据 那么我什么时候应该使用其中一种而不是另一种呢 除了要求 dynamic元数据 binding还创建仅在当前线程中可见的绑
  • 如何从 Azure 函数返回 xlsx 文件?

    我见过一些人尝试过 我无法重现他们的结果 乐于使用任何语言 我可以从 HTTP 触发器创建 xlsx 我想从另一个 HTTP 触发器返回该文件 如果您已经生成了该文件 则返回它只是创建一个带有附件的 HTTP 响应 var result n
  • 使用 Python 字典作为键(非嵌套)

    Python 不允许将字典用作其他字典中的键 是否有使用非嵌套字典作为键的解决方法 更复杂的不可散列对象和我的具体用例的一般问题是搬到这里 https stackoverflow com questions 1611797 using no
  • C++ 模板参数更改对指针的引用

    也许我不知道如何搜索 但事实上我找不到任何人谈论这个 我的结构有一个non type论证取决于type争论 template lt typename SpecType SpecType NonType gt struct Struct Wh
  • yii 自定义错误页面,例如 404、403、500

    我正在尝试为所有错误消息创建单独的文件 404 403 500 等 这样我就可以为它们进行定制设计 如果可能的话 我不希望页眉和页脚也包含在我的错误页面中 现在我有这个 在我的站点控制器 php并把错误404 php进入我的浏览量 站点 f
  • 如何分析 Java 中的线程?

    我的应用程序中有生产者和消费者线程 我需要对它们进行分析以查看线程的性能 每个线程进入睡眠和等待之前所花费的时间等 并采取纠正措施以提高应用程序的整体效率 关于如何解决这个问题有什么建议吗 我个人使用 YourKit java profil
  • 在 Django 中接受电子邮件地址作为用户名

    有没有一种好方法可以在 Django 中执行此操作 而无需滚动我自己的身份验证系统 我希望用户名是用户的电子邮件地址 而不是他们创建用户名 请指教 对于其他想要这样做的人 我建议看一下django 电子邮件作为用户名 https githu
  • 使用 docker 和 --privileged 构建

    我在用着本指南 https aws amazon com blogs ai build a voice kit with amazon lex and a raspberry pi 使用 Amazon Lex 和 Raspberry Pi
  • 如何在VB6中模拟.net Int64?

    如何在 VB6 中存储 Int64 数字以与 Win32 函数一起使用 有没有办法在 net中定义像Int64这样的类型 并简单评估一下数字 我认为许多 VB6 程序员都需要这样的东西 因为一些 Win32 API 使用 int64 作为参
  • 如何淡出图像的侧面?

    当您扩大浏览器时 您会注意到图像的右侧和左侧以黑色淡出 我需要将相同的功能应用到我的画廊 但不知道 我找到了这个 gt gt link https stackoverflow com questions 9437400 css fade o
  • 不带 href="#" 的脚本链接

    我的网络应用程序使用了很多 a href Perform client script action a 用于脚本编写的锚链接 这是我十多年前作为 Dreamweaver 用户时养成的习惯 现在我开始质疑这是否有必要 我其实不知道为什么 a
  • 我应该在 SSL 证书请求的通用名称中包含“www”吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我即将为一个小型网站购买 SSL 证书 输入 www domain Name com 或 domainName com 作为常用名是最佳做法吗 确保您
  • `ggplot2` axis.text margin 修改了刻度位置

    我不确定我是否遇到了错误或者操作不正确 指定时axis textggplot 中的边距 并移动轴的位置 设置不会保留 在不移动轴文本的情况下 轴周围有足够的空间 library ggplot ggplot mtcars aes mpg wt
  • Google 主页网址 https://www.google.co.in/?gws_rd=cr&ei=xgH... 中的“ei”是什么意思?

    我知道谷歌网址中的一些参数 例如 gws 谷歌网络服务器 rd 重定向 cr 所指国家 但我注意到一个我无法识别的 ei 什么是ei这个网址是什么意思 http www google co in url ei qWwlUqD4MIrRrQf
  • 异步方法的并发执行

    使用 async await 模型 我有一个方法可以对 Web 服务进行 3 次不同的调用 然后返回结果的并集 var result1 await myService GetData source1 var result2 await my