私のアプリケーションでは、置換値の辞書で複数の文字列を結合したいと考えています。単一の結果を他の複数の結果と結合するデータブロック
readTemplateBlock
には、FileInfosが供給され、その内容が文字列として返されます。
getReplacersBlock
は、1つの置換え辞書でフィードされます(1回限り)。
joinTemplateAndReplacersBlock
はreadTemplateBlock
の各項目に1つの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();
ブロックがありますか?多分私が見落とした設定オプション?
あなたはAを使用して考えがあります'WriteOnceBlock'と' JoinBlock'ではなく、辞書の 'TaskCompletionSource'ですか? – svick
聞いたことがありません。研究 –
あなたは精緻化し、おそらく答えになるでしょうか? –