在我的應用程序中,我想要使用替換值字典連接多個字符串。將多個其他結果加入單個結果的數據塊
readTemplateBlock
得到了FileInfos並返回它們的內容作爲字符串。
getReplacersBlock
獲取(一次)一個替換字典。
joinTemplateAndReplacersBlock
應加入readTemplateBlock
的每個項目與一個getReplacersBlock
結果。
在我目前的設置中,它需要我爲每個發佈的文件重新發布相同的替換字典。
// Build
var readTemplateBlock = new TransformBlock<FileInfo, string>(file => File.ReadAllText(file.FullName));
var getReplacersBlock = new WriteOnceBlock<IDictionary<string, string>>(null);
var joinTemplateAndReplacersBlock = new JoinBlock<string, IDictionary<string, string>>();
// Assemble
var propagateComplete = new DataflowLinkOptions {PropagateCompletion = true};
readTemplateBlock.LinkTo(joinTemplateAndReplacersBlock.Target1, propagateComplete);
getReplacersBlock.LinkTo(joinTemplateAndReplacersBlock.Target2, propagateComplete);
joinTemplateAndReplacersBlock.LinkTo(replaceTemplateBlock, propagateComplete);
// Post
foreach (var template in templateFilenames)
{
getFileBlock.Post(template);
}
getFileBlock.Complete();
getReplacersBlock.Post(replacers);
getReplacersBlock.Complete();
有沒有更好的塊我失蹤了?也許我忽略了一個配置選項?
你有沒有使用考慮'TaskCompletionSource'用於字典,而不是'WriteOnceBlock'和'JoinBlock'? – svick
從來沒有聽說過他們。研究 –
你能否詳細說明,也許會變成答案? –