TPL Dataflow zapewnia TransformBlock
przekształcania wejście, np .:Pomiń Pozycja w dataflow TransformBlock
var tb = new TransformBlock<int, int>(i => i * 2);
Czy to możliwe, aby nie wyjście niektóre wejścia, np jeśli dane wejściowe nie zawierają testu sprawdzającego poprawność?
var tb = new TransformBlock<InputType, OutputType>(i =>
{
if (!ValidateInput(i))
{
// Do something to not output anything for this input
}
// Normal output
}
Jeśli nie jest to możliwe, jaki byłby najlepszy wzór do osiągnięcia tego celu?
Coś jak poniżej?
BufferBlock<OutputType> output = new BufferBlock<OutputType>();
var ab = new ActionBlock<InputType>(i =>
{
if (ValidateInput(i))
{
output.Post(MyTransform(i));
}
}
Zasadniczo jest to opcja (2) w odpowiedzi svicka. –
@GordonBean z dodanym bezpośrednim łączem między blokami – VMAtm