JoinBlock<T1,T2,T3>.ISourceBlock<Tuple<T1,T2,T3>>.ReserveMessage Метод

Определение

Резервирует право владения сообщением, идентифицируемым DataflowMessageHeader, из ISourceBlock<TOutput> в ITargetBlock<TInput>.

 virtual bool System.Threading.Tasks.Dataflow.ISourceBlock<System.Tuple<T1,T2,T3>>.ReserveMessage(System::Threading::Tasks::Dataflow::DataflowMessageHeader messageHeader, System::Threading::Tasks::Dataflow::ITargetBlock<Tuple<T1, T2, T3> ^> ^ target) = System::Threading::Tasks::Dataflow::ISourceBlock<Tuple<T1, T2, T3> ^>::ReserveMessage;
bool ISourceBlock<Tuple<T1,T2,T3>>.ReserveMessage (System.Threading.Tasks.Dataflow.DataflowMessageHeader messageHeader, System.Threading.Tasks.Dataflow.ITargetBlock<Tuple<T1,T2,T3>> target);
abstract member System.Threading.Tasks.Dataflow.ISourceBlock<System.Tuple<T1,T2,T3>>.ReserveMessage : System.Threading.Tasks.Dataflow.DataflowMessageHeader * System.Threading.Tasks.Dataflow.ITargetBlock<'T1 * 'T2 * 'T3> -> bool
override this.System.Threading.Tasks.Dataflow.ISourceBlock<System.Tuple<T1,T2,T3>>.ReserveMessage : System.Threading.Tasks.Dataflow.DataflowMessageHeader * System.Threading.Tasks.Dataflow.ITargetBlock<'T1 * 'T2 * 'T3> -> bool
Function ReserveMessage (messageHeader As DataflowMessageHeader, target As ITargetBlock(Of Tuple(Of T1, T2, T3))) As Boolean Implements ISourceBlock(Of Tuple(Of T1, T2, T3)).ReserveMessage

Параметры

messageHeader
DataflowMessageHeader

Объект DataflowMessageHeader сообщения, которое требуется зарезервировать.

target
ITargetBlock<Tuple<T1,T2,T3>>

Объект ITargetBlock<TInput>, для которого будет зарезервировано сообщение.

Возвращаемое значение

Boolean

Значение true, если сообщение было успешно зарезервировано; в противном случае — значение false.

Реализации

Исключения

Недопустимое значение messageHeader.

target имеет значение null (nothing в Visual Basic).

Комментарии

Зарезервированное ITargetBlock<TInput> сообщение не должно быть связано с этим ISourceBlock<TOutput> экземпляром. Кроме того, этот ISourceBlock<TOutput> экземпляр, возможно, никогда не предложил сообщение непосредственно этому ITargetBlock<TInput>объекту.

При true возвращении необходимо вызвать либо ConsumeMessage ReleaseReservation для этого сообщения, либо с таким же DataflowMessageHeader и ITargetBlock<TInput>. . Если этого не сделать, источнику может быть не удается распространить любые дальнейшие сообщения на любой целевой объект.

Не вызывайте ReserveMessage , пока целевой объект удерживает внутренние блокировки. Это приведет к нарушению иерархии блокировок, необходимой для предотвращения взаимоблокировок в сети потоков данных.

Применяется к