JoinBlock<T1,T2>.ISourceBlock<Tuple<T1,T2>>.ReserveMessage Method

Definition

Reserves the right to pass the ownership of the message identified by the DataflowMessageHeader from this ISourceBlock<TOutput> to the ITargetBlock<TInput>.

C#
bool ISourceBlock<Tuple<T1,T2>>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader messageHeader, System.Threading.Tasks.Dataflow.ITargetBlock<Tuple<T1,T2>> target);

Parameters

messageHeader
DataflowMessageHeader

The DataflowMessageHeader of the message that is to be reserved.

target
ITargetBlock<Tuple<T1,T2>>

The ITargetBlock<TInput> for which the message is to be reserved.

Returns

true if the message was successfully reserved; otherwise, false.

Implements

Exceptions

The messageHeader is not valid.

The target is null (Nothing in Visual Basic).

Remarks

The ITargetBlock<TInput> for which the message is to be reserved need not be linked from this ISourceBlock<TOutput> instance. Moreover, this ISourceBlock<TOutput> instance may have never offered the message directly to the ITargetBlock<TInput>.

If true is returned, you must subsequently call either ConsumeMessage or ReleaseReservation for this message with the same DataflowMessageHeader and ITargetBlock<TInput>. If you don't, the source may be unable to propagate any further messages to any target.

Don't call ReserveMessage while the target is holding any internal locks. Doing so will violate the lock hierarchy necessary to avoid deadlocks in a dataflow network.

Applies to

Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8 (package-provided), 8, 9 (package-provided), 9, 10 (package-provided), 10
.NET Standard 2.0 (package-provided), 2.1 (package-provided)
UWP 10.0