1

私はこのバッチブロックを

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か???

4

1 に答える 1