TPL 数据流:将传入集合展平为顺序项目

2023-12-30

我正在使用 TPL 数据流构建一个应用程序。实际上我有以下问题。我有一个变换块var tfb1 = new TranformBlock<InMsg, IReadOnlyCollection<OutMsg>>. So tfb1接收传入消息并创建传出消息列表。此出消息列表应链接到路由器数据块,该路由器数据块接收OutMsg作为输入(而不是IReadOnlyCollection<OutMsg>).

我怎样才能压平IReadOnlyCollection以便包含的消息可以用作例如的输入形式为的变换块TransformBlock<OutMsg, SomeOtherType>。是否可以通过LinkTo()?

Thx


您可以使用TransformManyBlock代替TransformMany压平任何IEnumerable<T>结果,例如:

var flattenBlock = new TransformManyBlock<InMsg,OutMsg>(msg=>{
    List<OutMsg> myResultList;
    //Calculate some results
    return myResultList;
});

这会将各个 OutMsg 实例传递到下一个块。

您可以使用迭代器立即传播各个消息:

  var flattenBlock = new TransformManyBlock<InMsg,OutMsg>(msg=>{
    //Calculate some results
    foreach(var item in someDbResults)
    {
        yield return item;
    }
});

或者你可以直接压平输入:

var flattenBlock = new TransformManyBlock<IEnumerable<OutMsg>,OutMsg>(items=>items);

您可以将此块链接到任何接受 OutMsg 的块:

var block = new ActionBlock<OutMsg>(...);

flattenBlock.LinkTo(block);

You can route通过将谓词传递给消息LinkTo。例如,如果要将失败消息路由到日志记录块,您可以键入:

flattenBlock.LinkTo(logBlock,msg=>msg.HasError);
flattenBlock.LinkTo(happyBlock);

与任何谓词不匹配的消息将卡在输出缓冲区中并阻止块完成。通过不带谓词的一个链接,您可以确保所有消息都将得到处理

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

TPL 数据流:将传入集合展平为顺序项目 的相关文章

  • 反序列化 GUID 数组时出现 JSON.NET 异常

    我正在使用 JSON NET 反序列化从浏览器发送的 AJAX HTTP 请求 并且在使用 Guid 作为参数的 Web 服务调用时遇到问题 当我使用内置的 NET 序列化器时 这工作得很好 首先 流中的原始字节如下所示 System Te
  • 可以作为参数传递给 POST 方法的对象的最大大小

    我有一个带有 POST 方法的 Web API 控制器 如下所示 public class MyController ApiController POST api Scoring public HttpResponseMessage Pos
  • 共享库 C++ Makefile

    我需要编译胖二进制文件才能在另一台 Linux 机器上使用它 但缺少一些库 因此据我了解 我应该使用一些 shared 选项来编译它 但我不明白如何为此配置 Makefile 目前我的 makefile 如下所示 CC g CC FLAGS
  • 如何正确使用memcpy?

    我有一个mainbuf bufsize 最初为空 我正在阅读一些输入 read fd otherbuf sizeof otherbuf 分配给不同的字符串otherbuf 每次我分配一个新字符串给otherbuf我想将其附加到mainbuf
  • 在 C 中使用模板函数的最短示例?

    我如何处理函数echo tpl可以采取1类型参数int or string 然后打印出来 C没有模板 我认为你能做的最好的事情就是使用联合或让函数具有不同的名称 后一种具有不同名称的方法是准标准方法 例如fabs fabsf fabsl a
  • 创建一个从用户机密获取连接字符串的 DbContextFactory

    使用 DotNetCore 解决方案WebApi项目和一个单独的Data包含实体框架实现的项目 我们一直在升级库 因此我们使用所有最新的核心内容 In the Data项目 我们创建了一个ApplicationDbContextFactor
  • 处理可选依赖项 (C#)

    我们有一个可以选择与 TFS 集成的应用程序 但是由于集成是可选的 所以我显然不希望所有机器都需要 TFS 程序集作为要求 我应该怎么办 我是否可以在主程序集中引用 TFS 库 并确保在使用 TFS 集成时仅引用 TFS 相关对象 或者 更
  • 如何将值从 ASP.NET MVC 控制器传递到 MVC 视图内的 ASP.NET Webforms 控件?

    我的 ASP NET MVC 方法并未跨越 ASP NET Web 窗体 因此我很难理解如何更好地将值从 ASP NET MVC 控制器传递到 MVC 视图内的 ASP NET Webforms 脚本 例如 控制器动作 public Vie
  • 如何为 IAsyncOperation 指定回调方法

    是否可以指定一个方法完成后调用async手术 平台 C Windows Phone 8 我需要实现非阻塞方法来异步发送UDP数据包 他们有我的方法 onWriteComplete int errorCode 操作完成时回调 这是我尝试过的
  • C++ 中的结构填充

    如果我有一个struct在 C 中 有没有办法安全地将其读 写到跨平台 编译器兼容的文件中 因为如果我理解正确的话 每个编译器都会根据目标平台进行不同的 填充 不 那是不可能的 这是因为C 在二进制层面缺乏标准化 Don Box http
  • 对双向链表进行排序 C++

    尝试通过遍历列表的循环来完成此操作 在循环中 我将头节点输入到我定义的排序函数中 然后使用 strcmp 来确定节点中的哪个名称是否应该排在前面 它不起作用 因为写得太早了 我通过一次沿着列表一个节点进行线性比较 而不是回去查看第一个节点是
  • 在 Linux 上用 C 跟踪键盘和鼠标事件

    如何在 Linux 中用 C 语言跟踪键盘或鼠标事件 Like for example if the user presses ESC Shift etc I should be able to track it Same way for
  • 使用 C# winforms 与 Windows 中的其他桌面应用程序交互

    我想知道是否可以与使用我的程序的其他程序进行交互 例如 单击另一个程序上的按钮等 我不确定这是否可能 但如果可能的话 有人可以提供一些 C 示例代码 Thanks 您可以创建消息并将其发送到其他进程 为此 您必须在 C 代码中使用 P In
  • 如何在 JSON 输出上强制采用 ISO 格式“YYYY-MM-DDThh:mm:ss.sss”?

    我有一个 ASP NET WebApi2 api 它返回一些 JSON 格式的时间戳 时间戳具有毫秒分辨率 通常我会得到这种格式的时间戳 这很好 YYYY MM DDThh mm ss sss 不幸的是 如果时间戳恰好用整秒对日期进行编码
  • 如何使用 Dictionary 属性序列化对象?

    在下面的示例代码中 我得到了这个error 元素 TestSerializeDictionary123 Customer CustomProperties 呕吐型 System Collections Generic Dictionary
  • MVC - 从视图调用控制器

    我是 MVC 新手 我正在使用 MVC 开发一个 Web 应用程序 该应用程序仅包含一个页面 所以在这个视图中我必须填充多个数据 假设应用程序是 新闻提要 应用程序 我需要填充最近的新闻 您喜欢的新闻 您朋友推荐的新闻等 那么我应该从视图到
  • 我使用 difftime 的 c 函数有时会返回 65535

    我有一个函数 使用 difftime 来检测自通信心跳停止以来的时间 以秒为单位 该函数的运行速度可以达到每 50 毫秒一次 该函数似乎可以工作 除了偶尔返回 65535 之外 我可以将执行次数减少到每秒一次 因为 difftime 的返回
  • 着色器可以旋转形状以面向相机吗?

    我制作了一个球出现在 3D 空间中的场景 三角球耗费大量资源 所以我使用带有球纹理的二维表面 四边形 来完成此操作 但现在我需要在每次相机移动时调整形状的方向 我使用位置变换和 LookAt 方法来完成此操作 问题是我可以优化这个吗 如果可
  • 将用户控件绑定到 bool 属性的相反值

    非常简单 我想做同样的事情this https stackoverflow com questions 534575 how do i invert booleantovisibilityconverter但在winforms中 谷歌似乎提
  • 使用 CRTP 模式时继承中的不明确方法

    我正在定义一个DoubleWrapper类继承自两个 CRTP 基类 Ratioable and Divable 两者都定义operator 具有不同的签名 T operator double const scalar const retu

随机推荐

  • AWS:专用主机VS专用实例,为什么前者比后者贵?

    我正在准备 AWS 的助理架构师考试 但找不到这个问题的解释 为什么专用主机比专用实例贵 我理解两者之间的主要区别 只是在我的大脑中它没有意义 这是我的观点 如果你要求一个专用主 机 你就可以控制整个硬件 CPU RAM 插槽等 您可以使用
  • 微服务架构:跨服务数据共享

    考虑在线商店项目的以下微服务 用户服务保留有关商店用户的帐户数据 包括名字 姓氏 电子邮件地址等 购买服务跟踪有关用户购买的详细信息 每个服务都提供一个用于查看和管理其相关实体的 UI 购买服务索引页面列出了购买情况 每个采购项目应具有以下
  • 如何在 .cargo/config 文件中使用环境变量?

    我在用着 cargo config像这样 target arm linux androideabi linker home rico android ndk r13b toolchains arm linux androideabi 4 9
  • iframe加载后如何隐藏父垂直滚动条?

    我已附上演示该问题的示例代码 我正在 Firefox 3 5 7 中检查这一点 问题是父级 HTML 有一个滚动条 并且它加载一个全屏的 iframe 高度 100 宽度 100 我希望在加载 iframe 后删除父级滚动条 1 这可以吗
  • 在 TypeScript 中迭代接口属性

    我需要将接口属性映射到对象 interface Activity id string title string body string json Object 我目前正在做 headers Array text id value id te
  • ASP.NET MVC2 中的正确错误处理

    我在基本控制器中有一个覆盖 OnException ExceptionContext filterContext 来捕获应用程序中的任何错误 然后记录它们 我在应用程序中遇到的问题是 此特定方法因某些错误而被触发四次 我将引导您完成一个场景
  • 使用多个模型获取进行主干视图渲染

    我需要在带有主干的 html 模板中使用 1 个模型和 1 个集合 但有时 html是在模型之后准备好的 我有 var FormUtilisateurView Backbone View extend initialize function
  • 嵌套集合、php 数组和转换

    我需要将我的嵌套集结构 mysql 转换为这个空间树的json 1 http blog thejit org wp content jit 1 0a examples spacetree html http blog thejit org
  • 从后台线程更新 BindingList<>?

    我想知道如何使用 WPF 中的 Dispatcher 从另一个线程安全地更新我的 BindingList 集合 我也愿意接受其他解决方案 非常感谢 卡韦 我更喜欢安排一个Task到 UI 线程 您可以通过调用获取 UI 线程调度程序Task
  • SpecFlow:ClassInitialize 和 TestContext

    首先 我是 SpecFlow 的新手 我有一个功能文件 我已经 想要使用 MSTest 自动运行它作为功能测试 涉及完全设置的服务器 数据访问 为此 我必须使用 SpecFlow 的 Given 块中的数据配置服务器 然后启动它 我还必须将
  • 是否可以强制 Hibernate 嵌入实体?

    在我的用例中 我想 Embedded一类C在一个实体中 另一个实体指的是C with OneToMany协会 因此C注释为 Entity 我知道这似乎是糟糕的设计 但我相信这对我的情况来说非常有意义 是否可以强制 Hibernate 嵌入实
  • Jest 测试中的“requestAnimationFrame”polyfill 错误

    升级到 React 后运行 Jest 单元测试时出现此错误 React depends on requestAnimationFrame Make sure that you load a polyfill in older browser
  • 从中心和半径创建 SqlGeography 多边形圆

    我想使用 C 在 sql server 2008 地理字段中保存一个圆圈 在 C 中 我有纬度 经度和半径 但我找不到一种方法来计算代表圆的多边形并创建一个SqlGeography从中 我尝试使用以下函数来创建多边形 private Lis
  • 使用数据收集器 UDC 的替代品?

    由于 UDC 是不再支持 http wiki eclipse org UDC或者 Eclipse 的一部分 我想知道是否有替代品 我想获得有关我们的用户组如何实际使用 Eclipse 的更多信息 以便积极主动地尝试改善他们的环境 我想收集的
  • 使用小米5 MIUI 8 Android Studio进行调试

    我无法从 Android Studio 启动应用程序 当我单击 运行 时 我选择我的设备 并且出现以下消息 但事实并非如此 该应用程序未安装在设备中 在 运行 控制台中 出现以下内容 04 22 15 53 08 Launching app
  • WScript.Shell Exec 的实时控制台输出

    我花了一天的大部分时间寻找解决方案 我开始认为这可能无法满足我的要求 我的基本设置是运行从 Excel VBA 代码调用的 vbscript vbs vba 代码必须继续运行并保持 vbscript 运行 但会不时使用以下命令对其进行监视E
  • 每次进行更改时回收应用程序池

    我制作了一个多语言网站 其中在同一网站上包含 4 个域 因此也包含 4 种不同的语言和网站树 但是 每次我需要发布对网站的新更改或其他更改 例如更新模板 脚本等 时 我都必须回收应用程序池 以使更改在以访问者身份查看网站时显示 我该如何解决
  • 如何在 athena 上的字符串数据类型上提取月份名称

    SELECT sales invoice date MONTH DATE TRUNC month CASE WHEN TRIM sales invoice date THEN DATE 1999 12 31 ELSE DATE PARSE
  • 复制表更改 1 列的值并将其插入到同一个表中

    标题基本上概括了所有内容 以及我在这里想要完成的任务 更多信息 我得到了一个有 4 列的表格 我需要它的精确副本 但只需要更改一列的值 假设该列名为客户编号 即 123456 其他值并不重要 如何复制整个表并将客户编号更改为 123457
  • TPL 数据流:将传入集合展平为顺序项目

    我正在使用 TPL 数据流构建一个应用程序 实际上我有以下问题 我有一个变换块var tfb1 new TranformBlock