DataflowBlockOptions.EnsureOrdered Property


Gets or sets a value that indicates whether ordered processing should be enforced on a block's handling of messages.

 property bool EnsureOrdered { bool get(); void set(bool value); };
public bool EnsureOrdered { get; set; }
member this.EnsureOrdered : bool with get, set
Public Property EnsureOrdered As Boolean

Property Value


true if ordered processing should be enforced; otherwise, false. The default value is true.


By default, dataflow blocks enforce ordering on the processing of messages. This means that a block like System.Threading.Tasks.Dataflow.TransformBlock<TInput,TOutput> will ensure that messages are output in the same order they were input, even if parallelism is employed by the block, and the processing of a message N finishes after the processing of a subsequent message N+1 (the block will reorder the results to maintain the input ordering prior to making those results available to a consumer). Some blocks may allow this to be relaxed, however. Setting EnsureOrdered to false tells a block that it may relax this ordering if it's able to do so. This can be beneficial if making a processed result immediately available is more important than maintaining the input-to-output ordering.

Applies to