私はこのバッチブロックを
var batchBlock = new BatchBlock<IEnumerable<string>>(10000,
new GroupingDataflowBlockOptions
{
CancellationToken = cancellationToken,
TaskScheduler = taskScheduler
}
);
そして、この ActionBlock として
var actionBlock = new ActionBlock<IEnumerable<string>>(enumerable =>
{
for (var i = 0;
i < enumerable.Count();
i++)
{
File.AppendAllText(@"D:\Test.log",
enumerable.ElementAt(i));
}
});
それらを次のように添付しようとすると
batchBlock.LinkTo(actionBlock);
というエラーが表示されますThe type arguments for method System.Threading.Tasks.Dataflow.DataflowBlock.LinkTo<TOutput>(System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>, System.Threading.Tasks.Dataflow.ITargetBlock<TOutput>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
これを行っても、まったく同じエラーが発生します..
batchBlock.LinkTo((ActionBlock<IEnumerable<string>>)actionBlock);
ActionBlock
ただし、コンストラクターでcreate a new をアタッチする代わりに、コンパイラーは文句を言いません。
batchBlock.LinkTo(new ActionBlock<IEnumerable<string>[]>(enumerable => { /* log to file */ }));
誰が私が間違っているのか教えてもらえますか? actionBlock
なぜ私に私のものを付けさせてくれないのですbatchBlock
か???