public override INode <T[]> Process() { var inputs = new List <T>(); if (NodeInputProvider != null) { NodeInputProvider.Process(); inputs.AddRange(NodeInputProvider.Output); } else if (Input != null) { inputs.Add(Input); } Output = new T[1][]; Output[0] = inputs.ToArray(); return(this); }
public override INode <TOutput> Process() { var inputs = new List <TInput>(); if (NodeInputProvider != null) { NodeInputProvider.Process(); inputs.AddRange(NodeInputProvider.Output); } else if (Input != null) { inputs.Add(Input); } //process inputs and put result to the Output var outputs = new List <TOutput>(); foreach (var input in inputs) { var output = Process(input); outputs.AddRange(output); } //var outputs = new ConcurrentBag<TOutput>(); //Parallel.ForEach(Partitioner.Create(0, inputs.Count), range => //{ // for (var i = range.Item1; i < range.Item2; i++) // { // var output = Process(inputs[i]); // for (var j = 0; j < output.Length; j++) // { // outputs.Add(output[j]); // } // } //}); Output = outputs.ToArray(); return(this); }