Parallel.ForEach 和 async-await [重复]

2023-12-12

我有这样的方法:

public async Task<MyResult> GetResult()
{
    MyResult result = new MyResult();

    foreach(var method in Methods)
    {
        string json = await Process(method);

        result.Prop1 = PopulateProp1(json);
        result.Prop2 = PopulateProp2(json);

    }

    return result;
}

然后我决定使用Parallel.ForEach:

public async Task<MyResult> GetResult()
{
    MyResult result = new MyResult();

    Parallel.ForEach(Methods, async method =>
    {
        string json = await Process(method);    

        result.Prop1 = PopulateProp1(json);
        result.Prop2 = PopulateProp2(json);
    });

    return result;
}

但现在我遇到了一个错误:

异步模块或处理程序已完成,而异步操作仍处于挂起状态。


async不能很好地配合ForEach。特别是,您的asynclambda 正在转换为async void方法。有许多避免的理由async void(正如我在 MSDN 文章中所描述的);其中之一是您无法轻易检测到asynclambda 已完成。 ASP.NET 将看到您的代码在未完成的情况下返回async void方法并(适当地)抛出异常。

您可能想要做的是处理数据同时,只是不在parallel。并行代码几乎不应该在 ASP.NET 上使用。以下是异步并发处理的代码:

public async Task<MyResult> GetResult()
{
  MyResult result = new MyResult();

  var tasks = Methods.Select(method => ProcessAsync(method)).ToArray();
  string[] json = await Task.WhenAll(tasks);

  result.Prop1 = PopulateProp1(json[0]);
  ...

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

Parallel.ForEach 和 async-await [重复] 的相关文章

  • 将多种类型存储为 C++ 字典中的值?

    我想编写一个行为几乎等同于 Python 字典的 C 对象 C 的std map and std unordered map容纳了 Python 字典已有的一些功能 但缺乏最重要的功能之一 即能够添加任意对象和类型 即使不可能 您离实现 P
  • 如何获取列表框中项目的索引?

    我正在将项目添加到ListBox像这样 myListBox Items addRange myObjectArray 我还想通过以下方式选择我添加的一些项目 foreach MyObject m in otherListOfMyObject
  • 尝试从 Web 应用程序访问报告服务时,Internet Explorer 导致 IIS 500 错误

    我有一个 aspx Web 表单页面 它调用托管在 SQL 2012 报告服务服务器上的 SQL 2012 SSRS 报表 并使用报表查看器在 aspx 页面上显示报表 问题是当我单击链接将参数发送到报告服务器并运行报告时 页面挂起 仅在
  • 将 python 字典翻译为 C++

    我有包含以下代码的 python 代码 d d 0 0 0 d 1 2 1 d 2 1 2 d 2 3 3 d 3 2 4 for i j in d print d i j d j i 不幸的是 对于我的目的来说 循环遍历 python 中
  • 在 C# 中将 Exe 文件作为嵌入式资源运行

    我有一个第 3 方 EXE 我只需要从我的 C 应用程序运行它 我的主要目标是对我的 C 文件中的第 3 方可执行文件进行版权保护 有没有更好的方法来做到这一点 我怎样才能做到这一点 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 通过模板参数向类添加方法

    我希望在类中拥有一个模板参数特定函数 取消启用enable if 它的名称保持不变 参数类型有所不同 尽管这应该不相关 因为只有一个被初始化 enum class MyCases CASE1 CASE2 template
  • FileMode 和 FileAccess 以及 IOException:进程无法访问文件“filename”,因为它正在被另一个进程使用

    我有一个应用程序 A 它生成一个用于跟踪的文本文件 同时 应用程序 B 需要读取相同的文本文件并附加在邮件消息中 但当应用程序 B 尝试读取文本文件时 出现以下错误 IOException 进程无法访问文件 filename 因为它 正在被
  • C# Response.Write pdf 不适用于 Android 浏览器

    我目前在 Android 环境中使用 pdf 导出时遇到了巨大的问题 我正在使用报告查看器控件将报告呈现为字节数组 接下来我使用response binarywrite方法将字节流输出到浏览器 这适用于所有浏览器以及 iPhone 和 iP
  • ASPNET MVC - 使用具有相同签名的新助手覆盖 Html.TextBoxFor(model.property)?

    我想用我自己的助手重写 Html TextBoxFor 该助手具有完全相同的签名 当然 但名称空间不同 这是否可能 如果可以 如何实现 原因是我在现有的应用程序中有 100 多个视图 并且我想更改 TextBoxFor 的行为 以便在属性具
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • EF5、SQL Server、经度和纬度

    我发现在 SQL Server 中存储纬度和经度的最佳类型是十进制 9 6 参考文献 1 在 SQL 数据库中存储纬度和经度数据时应使用什么数据类型 https stackoverflow com questions 1196415 wha
  • 非静态类中的静态方法有什么意义?

    我无法理解以下代码的潜在错误 class myClass public void print string mess Console WriteLine mess class myOtherClass public static void
  • 迭代非增量枚举

    在你问之前 我已经looked https stackoverflow com questions 261963 c iterate through an enum and looked https stackoverflow com qu
  • C++ 中的无符号双精度?

    为什么 C 不支持无符号双精度语法 因为典型的浮点格式不支持无符号数 例如 参见此 IEEE 754 格式列表 http en wikipedia org wiki IEEE 754 2008 Formats 添加通用硬件不支持的数字格式只
  • C#无循环方式将字符串拆分为多维数组或锯齿状数组

    如何在不循环的情况下将字符串拆分为多维数组或锯齿状数组 我看到一个代码片段 其中有人使用文件流执行此操作 但我不知道如何使其适用于我的字符串 我的字符串类似于1 2 3 1 4 1并可以分为ID Qty 这是我看到的代码 string li
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求

随机推荐

  • Nginx 自动将 HTTP 重定向到 HTTPS

    我正在尝试重定向我的所有流量http to https自动地 如何对我的所有域和子域进行 301 重定向 这是 NGINX 配置文件 upstream app server server unix run DigitalOceanOneCl
  • 为什么 SQL Server 将 SS 视为 Umlaut-S (ß)?

    当我运行以下查询时 select charindex COMMISSIONING 它返回 6 我专门选择 作为函数 因为我认为它不太可能出现在我的任何数据中 这几周工作得很好 但现在突然它在没有 的地方检测到 因此搞砸了我的功能 有人可以告
  • 重命名列后出现 keyerror

    I have df df pd DataFrame a 7 8 9 b 1 3 5 c 5 3 6 print df a b c 0 7 1 5 1 8 3 3 2 9 5 6 然后将第一个值重命名为this df columns valu
  • “git push appengine master”中需要用户名和密码

    这是我第一次使用 Google App Engine 我正在尝试上传 PHP 网站 我正在尝试使用 git 上传它 我遵循了他们的教程 最后他们说要输入这段代码 所以我就这么做了 我尝试在 git bash 中输入这段代码 这是代码 git
  • MVC 的 PHP 简单数据库连接类

    我已经为简单的 MVC 模式构建了新的数据库连接类 我需要知道这是执行此操作的正确方法
  • 存储过程中返回的地理列未显示在实体框架自动生成的复杂类型中

    我正在使用 Entity Framework 6 和 Net 4 5 我有一个选择并返回数据的存储过程 返回列之一是地理类型 在 Visual Studio 2013 中 我右键单击 edmx 文件 单击 从数据库更新模型 此操作获取我的存
  • 正则表达式在匹配字符串时如何忽略转义引号?

    我正在尝试编写一个正则表达式 它将匹配除尚未转义的撇号之外的所有内容 考虑以下 我的目标是编写一个基本上匹配其字符串部分的正则表达式 我正在考虑诸如此类的事情 为了匹配一个简单的字符串 但我一直在试图弄清楚如何在该撇号上进行负向后查找 以确
  • $wpdb->insert() 给出错误未定义函数

    我在 wp content theme mytheme 文件夹中创建了一个新文件 在文件中我编写了简单的查询 global wpdb insert wpdb gt insert wp test array orderID gt GET or
  • Linkify 函数中的自定义链接

    我正在尝试使用此 html 创建基于不同按钮的自定义链接
  • 如何使用材质设计卡制作阴影?

    这是我想要的结果 制作一张定制卡 custom cards Widget card String image return Container child Image asset image fit BoxFit cover decorat
  • 用于主轴标签的 Excel 宏

    我正在尝试编写一个宏来格式化图表以实现统一 我陷入了我认为最简单的部分 标记轴 它不会标记主值轴 y 轴 我在2010年和2013年多次录制过这个宏 有什么问题吗 我运行该宏 它在第 3 行进行调试 几乎就像标签不存在一样 仅运行前两行就证
  • 查找近似字符串匹配并替换为预定义字符串的有效方法

    我需要建立一个NER系统 命名实体识别 为简单起见 我通过使用近似字符串匹配来完成此操作 因为输入可能包含拼写错误和其他细微修改 我遇到过一些很棒的图书馆 例如 模糊模糊甚至更快快速模糊测试 但不幸的是我没有找到一种方法来返回匹配发生的位置
  • 使用 php 读取 csv 文件的最简单方法,然后选择一个特定值

    预先感谢您的时间 帮助 我是一个学习 php 的新手 所以请记住这一点 第一个问题 我需要一个读取 csv 文件的 php 脚本 第二个问题 如何回显该文件中的特定单元格 行和行 列 我在类似的回复中找到了这个脚本 该脚本完美地读取了整个文
  • 为什么 NSSet/NSMutableSet/NSCountedSet 不强制不可变对象作为条目?

    NSDictionary 键是 id 但集合的值只是 id 文档表明它们的值被保留 根据设置集合编程主题的基础知识 docs 但是 您可以修改单个对象本身 如果它们支持修改 如果修改对象 这可能会影响该对象的哈希值 从而影响查找 我认为 N
  • Oracle PL/SQL - 如何转义冒号 (:),被误解为绑定变量

    我有一个小的 PL SQL 脚本 用于尝试在两个 Oracle 数据库实例之间复制数据 我正在调用 SQL 脚本 经过清理 sqlplus username email protected 1434 SERVICENAME copyTabl
  • Azure 通知中心标签不创建也不更新 - 以特定用户为目标

    您好 我正在使用 Web api 作为后端服务 其中使用 Azure 通知中心 我需要根据条件业务逻辑通知登录用户 简而言之就是针对特定用户 我从中提取代码this文章 一切正常但是标签不创建也不更新 我需要帮助 这是我的代码片段 It r
  • JavaFX 超高清 (4K) 视频

    我想使用 JavaFX 2 MediaPlayer 播放超高清 4K 视频 但只得到黑屏 在 JRE 8 Windows 7 上运行 没有错误消息 有谁知道 JavaFX 是否可以播放超高清 4K 视频或者我可以在哪里找到这些信息 谢谢 我
  • 如何使用 Discord.js 检查消息作者是否具有管理员角色?

    我正在构建一个 Discord 机器人 我想要一个if仅当消息作者在公会中具有管理员角色时才会执行该语句 我尝试过拥有特定于角色的权限 但这意味着机器人所在的所有服务器上都必须有完全相同的名称角色 如何检查消息作者是否具有管理员角色 该角色
  • ASP.NET MVC - TempData - 好的或坏的实践

    我正在使用AcceptVerbsScott Gu 的 Preview 5 博客文章中详细介绍了处理 ASP NET MVC 中表单条目的方法 用户通过 GET 获取一个空表单 用户通过 POST 将填写的表单发布到同一操作 该操作验证数据
  • Parallel.ForEach 和 async-await [重复]

    这个问题在这里已经有答案了 我有这样的方法 public async Task