TPL Dataflow cung cấp một TransformBlock
cho chuyển đầu vào, ví dụ .:Bỏ qua mục trong Dataflow TransformBlock
var tb = new TransformBlock<int, int>(i => i * 2);
Có thể không ra một số đầu vào, ví dụ nếu đầu vào thất bại một số kiểm tra xác nhận?
var tb = new TransformBlock<InputType, OutputType>(i =>
{
if (!ValidateInput(i))
{
// Do something to not output anything for this input
}
// Normal output
}
Nếu điều đó là không thể, thì mẫu tốt nhất để đạt được mục tiêu đó là gì?
Điều gì đó như sau?
BufferBlock<OutputType> output = new BufferBlock<OutputType>();
var ab = new ActionBlock<InputType>(i =>
{
if (ValidateInput(i))
{
output.Post(MyTransform(i));
}
}
Đây là lựa chọn cơ bản (2) trong câu trả lời của svick. –
@GordonBean có thêm liên kết trực tiếp giữa các khối – VMAtm