Freigeben über


ISourceBlock<TOutput>.ReserveMessage Methode

Definition

Wird von einem verknüpften ITargetBlock<TInput>, um einen DataflowMessageHeader, der von diesem ISourceBlock<TOutput> zuvor angeboten wurde, zu 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

DataflowMessageHeader der Meldung, die reserviert wird.

target
ITargetBlock<TOutput>

Die ITargetBlock<TInput> der Meldung empfängt.

Gibt zurück

true, wenn die Nachricht erfolgreich reserviert wurde, andernfalls false.

Ausnahmen

Der messageHeader ist ungültig.

target ist null.

Hinweise

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

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

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

Gilt für: