TPL Dataflow इनपुट बदलने के लिए एक TransformBlock
प्रदान करता है, उदा .:छोड़ें आइटम
var tb = new TransformBlock<int, int>(i => i * 2);
यह संभव उत्पादन नहीं करने के लिए इनपुट, उदा में से कुछ है अगर इनपुट कुछ सत्यापन परीक्षण विफल रहता है?
var tb = new TransformBlock<InputType, OutputType>(i =>
{
if (!ValidateInput(i))
{
// Do something to not output anything for this input
}
// Normal output
}
यदि यह संभव नहीं है, तो अंत को प्राप्त करने के लिए सबसे अच्छा पैटर्न क्या होगा?
कुछ निम्नलिखित की तरह है?
BufferBlock<OutputType> output = new BufferBlock<OutputType>();
var ab = new ActionBlock<InputType>(i =>
{
if (ValidateInput(i))
{
output.Post(MyTransform(i));
}
}
यह अनिवार्य रूप से विकल्प (2) svick के उत्तर में है। –
@ गॉर्डनबीन ब्लॉक के बीच अतिरिक्त सीधा लिंक के साथ – VMAtm