【发布时间】:2014-03-21 02:35:10
【问题描述】:
这样的问题:
建议使用 DataflowBlock.NullTarget{T} 从管道中丢弃项目,例如
forwarder.LinkTo(DataflowBlock.NullTarget<SomeType>());
但是,如果您像这样使用 NullTarget,您如何等待 Completion?创建丢弃块不是更好吗:
ITargetBlock<SomeType> discard = DataflowBlock.NullTarget<SomeType>();
forwarder.LinkTo(discard);
然后等待完成?即
discard.Completion.Wait()
或者你不需要等待“NullTarget”块的完成,即它只是扔掉然后忘记吗?
【问题讨论】:
-
你为什么想要等待它?该块不做任何处理,所以我看不出你有什么理由要等待它。
-
因为我已经建立了一个管道,为了等待管道完成,我需要在所有端点上 Wait()。这些在我看来就像端点(并且它们确实具有 Completion 属性)。
-
好的,我查看了数据流库的内部,显然它的完成返回了一个 TaskCompletionSource
().Task。猜猜我现在正在阅读 TaskCompletionSource! :-)
标签: task-parallel-library dataflow