2

I wonder whether it is possible to subscribe to a one-time notification when the first item is received in the input buffer or processed in a data block. I am aware I can set a flag within the data block but that would create overhead as it would run check the flag on each new item. My data block processes several million items thus this flag adds unnecessary overhead.

Is there a better way to be notified on the first incoming item?

4

2 回答 2

1

您可以尝试使用 MaxMessages=1 创建指向处理通知的块的链接。发送一条消息后,此链接将被删除。

于 2013-07-28T08:35:28.057 回答
1

(我知道这已经晚了 11 个月......但我正在回答,希望有人能告诉我为什么这不是一个好主意。)

您有一个特定的块 X,您想知道它何时收到第一条消息。它有一个上游块。在上游块和块 X 之间插入一个 TransformBlock,使用 MaxMessages=1 将其与上游块链接,以便在收到第一条消息时立即取消链接。这也阻塞了上游块。插入的 TransformBlock 的 Func 在其委托中做了 3 件事:

  1. 做任何你想要的“收到第一个块”的通知。
  2. 将其后继区块 X 链接到上游区块。
  3. 返回其参数不变以传递给块 X。

换句话说......插入的块接受并传递第一个数据项并从数据流中拼接出来。

于 2014-03-26T02:43:00.547 回答