Поделиться через


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

Определение

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

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

Параметры

messageHeader
DataflowMessageHeader

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

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

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

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

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

Реализации

Исключения

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

target — это null (Nothing в Visual Basic).

Комментарии

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

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

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

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