- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 TPL Dataflow
中使用了一个 BroadcastBlock
,它链接到 ActionBlocks
。但是,我在我的代码中找不到错误。我通过 SendAsync
将项目发布到 BroadcastBlock
,当我打印 ActionBlocks
中的项目时,我发现有些项目丢失了,而另一些则神秘地重复了。我跟踪已处理项目的顺序,因此发现在项目丢失的情况下,先前或后续项目被复制(通过 LinkTo
馈送到相同的 Actionblock
>).我不知道发生了什么。以下是我的几个相关代码片段:
这里是 BroadCastBlock
的实例化:
buffer = new BroadcastBlock<Quote>(quote => quote);
这是我链接到操作 block 的方式:
//Filter for incoming quotes
Predicate<Quote> quoteBroadCastFilter = new Predicate<Quote>(newQuote =>
{
if (symbol.symbolID == newQuote.symbol.symbolID)
{
return true;
}
else
{
return false;
}
});
//Link Strategy up to BroadCastBlocks
buffer.LinkTo<Quote>(newStrategy.GetStrategyQuoteBuffer(), new DataflowLinkOptions { PropagateCompletion = true }, quoteBroadCastFilter);
这就是我向 BroadCastBlock
提交项目(报价)的方式:
buffer.SendAsync(quote);
问题是,当我在通过 SendAsync
发送之前打印出跟踪信息时,一切看起来都很好。当我在 ActionBlock
中打印与 BroadCastBlock
链接相同的信息时,我观察到罕见的错误。我注意到当项目被非常快速地馈送到 BroadCastBlock
时(通过 API 的 EventHandler
)
知道我做错了什么吗?
最佳答案
我在发现问题时回答了我自己的问题:
在将项目发送到 BroadCastBlock
之前,项目(ref 类型)从并发集合中读取、更新,然后发送。因此,有时候下一个项目已经从集合中读取并更新,而前一个项目仍然指向现在正在更新的同一个对象。简而言之,这会导致 BroadCastBlock
中已有的项目出现问题。 BroadCastBlock
克隆后没有问题,但在输入队列中的项目之前。
在通过 Post 或 SendAsync
将 Quote 对象发送到广播 block 之前,我必须执行 Quote 对象的深层复制。
关于c# - BroadcastBlock 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175860/
我在 TPL Dataflow 中使用了一个 BroadcastBlock,它链接到 ActionBlocks。但是,我在我的代码中找不到错误。我通过 SendAsync 将项目发布到 Broadca
我需要某种类似于 BroadcastBlock 的对象,但可以保证传送。所以我使用了 this question 的答案.但我并不是很清楚这里的执行流程。我有一个控制台应用程序。这是我的代码: sta
我正在尝试使用 TPL 数据流来创建管道。到目前为止一切正常,我的管道定义如下(尽管我的问题只是广播公司、submissionSucceeded、submissionFailed): // Defin
给定一个 BroadcastBlock如果缓冲区中有一条消息,是否可以防止将该消息发送到新链接的目标?例如: static void Main(string[] args) { var myB
我在将 BroadcastBlock(s) 连接到 BatchBlocks 时遇到问题。场景是源是 BroadcastBlocks,接收者是 BatchBlocks。 在下面的简化代码中,只有一个补充
我指的是 MSDN 中的以下链接:Broadcast Block 它声明发送到链接目标的消息是“克隆的”。 我想知道 MS 在这里指的是什么类型的克隆,深度克隆?它究竟如何影响内存消耗? 最佳答案 当
我是一名优秀的程序员,十分优秀!