【发布时间】:2014-01-08 11:24:37
【问题描述】:
使用 .NET TPL DataFlow 块。 有没有办法让消息处理超时?
例如
假设我有一个BufferBlock<T>,是否可以将其链接到一次处理一条消息的另一个块 (MaxDegreeOfParallellism1) 并在处理运行时间过长时强制超时?
或者甚至可以只使用 BufferBlock 吗?
我怀疑我可以以某种方式使用取消令牌和延迟,但不确定如何做到这一点。 另外,这样的超时会有多贵?是否会增加消息处理时间的开销?
【问题讨论】:
-
我认为没有内置超时。如果您只想过滤这些项目,而不仅仅是删除为其他项目腾出空间,则可以创建一个块。
-
“强制超时”到底是什么意思?你想cancel a non-cancelable operation吗? (我说的是您的处理代码,而不是数据流中的任何内容。)
标签: c# task-parallel-library tpl-dataflow