我从 TPL DataFlow 开始。我创建了以下工作代码。readFilesBlock 是一个BufferBlock 它是这样填充的:
public async void ReadItems(ITargetBlock<SourceCodeFile> target)
{
foreach(var item in Source)
{
await target.SendAsync(item); //when To use post instead of sendasync?
}
}
target.Complete();
现在我像这样使用 BufferBlock (readFilesBlock)
while (await readFilesBlock.OutputAvailableAsync())
{
var file = await readFilesBlock.ReceiveAsync();
ActionBlock<SourceCodeFile> action = new ActionBlock<SourceCodeFile>(item => storeResultsInBag(resultBag, item));
await action.SendAsync(file);
}
这工作正常。现在我想使用链接功能
我试过了:
var storeFilesInBagAction = new ActionBlock<SourceCodeFile>(item => storeResultsInBag(resultBag, item));
readFilesBlock.LinkTo(storeFilesInBagAction);
await storeFilesInBagAction.Completion;
但这一次我永远不会完成。
我究竟做错了什么?
当我不等待 Bagaction 中的存储文件时,没有退回物品。