ISourceBlock<TOutput>.ReserveMessage Methode

Definition

Aufgerufen von einem verknüpften ITargetBlock<TInput> , um ein zuvor angebotenes DataflowMessageHeader Angebot zu ISourceBlock<TOutput>reservieren.

public:
 bool ReserveMessage(System::Threading::Tasks::Dataflow::DataflowMessageHeader messageHeader, System::Threading::Tasks::Dataflow::ITargetBlock<TOutput> ^ target);
public bool ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader messageHeader, System.Threading.Tasks.Dataflow.ITargetBlock<out TOutput> target);
abstract member ReserveMessage : System.Threading.Tasks.Dataflow.DataflowMessageHeader * System.Threading.Tasks.Dataflow.ITargetBlock<'Output> -> bool
Public Function ReserveMessage (messageHeader As DataflowMessageHeader, target As ITargetBlock(Of Out TOutput)) As Boolean

Parameter

messageHeader
DataflowMessageHeader

Die DataflowMessageHeader Nachricht, die reserviert wird.

target
ITargetBlock<TOutput>

Die ITargetBlock<TInput> Nachricht wird reserviert.

Gibt zurück

truewenn die Nachricht erfolgreich reserviert wurde; andernfalls . false

Ausnahmen

Dies messageHeader ist ungültig.

target ist null.

Hinweise

Nur ITargetBlock<TInput> Instanzen, die mit dieser ISourceBlock<TOutput> Instanz verknüpft sind, können verwendet ReserveMessagewerden, und sie darf nur verwendet werden, um Instanzen zu reservieren DataflowMessageHeader , die zuvor von dieser Quelle für das Ziel angeboten wurden.

Wenn true dieser Wert zurückgegeben wird, muss die ITargetBlock<TInput> Nachricht anschließend entweder ConsumeMessage oder ReleaseReservation für diese Nachricht aufgerufen werden. Dies kann dazu führen, dass die Quelle keine weiteren Nachrichten an diese oder andere Ziele weitergeben kann.

ReserveMessage darf nicht aufgerufen werden, während das Ziel interne Sperren hält. Dadurch wird die Sperrhierarchie verletzt, die erforderlich ist, um Deadlocks in einem Datenflussnetzwerk zu vermeiden.

Gilt für: