DataflowBlock.Encapsulate<TInput,TOutput> Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy cél és egy forrás beágyazása egyetlen propagátorba.
public:
generic <typename TInput, typename TOutput>
static System::Threading::Tasks::Dataflow::IPropagatorBlock<TInput, TOutput> ^ Encapsulate(System::Threading::Tasks::Dataflow::ITargetBlock<TInput> ^ target, System::Threading::Tasks::Dataflow::ISourceBlock<TOutput> ^ source);
public static System.Threading.Tasks.Dataflow.IPropagatorBlock<TInput,TOutput> Encapsulate<TInput,TOutput>(System.Threading.Tasks.Dataflow.ITargetBlock<TInput> target, System.Threading.Tasks.Dataflow.ISourceBlock<TOutput> source);
static member Encapsulate : System.Threading.Tasks.Dataflow.ITargetBlock<'Input> * System.Threading.Tasks.Dataflow.ISourceBlock<'Output> -> System.Threading.Tasks.Dataflow.IPropagatorBlock<'Input, 'Output>
Public Function Encapsulate(Of TInput, TOutput) (target As ITargetBlock(Of TInput), source As ISourceBlock(Of TOutput)) As IPropagatorBlock(Of TInput, TOutput)
Típusparaméterek
- TInput
Megadja a cél által várt bemenet típusát.
- TOutput
A forrás által előállított kimenet típusát adja meg.
Paraméterek
- target
- ITargetBlock<TInput>
A beágyazandó cél.
- source
- ISourceBlock<TOutput>
A beágyazandó forrás.
Válaszok
A beágyazott cél és forrás.
Megjegyzések
A Encapsulate metódushoz két meglévő blokkra van szükség: egy célblokkra (egy implementálható ITargetBlock<TInput>osztály példányára) és egy forrásblokkra (egy implementálható ISourceBlock<TOutput>osztály példányára).
Encapsulate Létrehoz egy új belső osztálypéldányt, amely összekapcsolja az ITargetBlock<TInput> illesztőtagokat a target paraméterrel és a ISourceBlock<TOutput> felülettagokat a source paraméterrel. Mindkettő ITargetBlock<TInput> és ISourceBlock<TOutput> származtatva.IDataflowBlock A blokkkiegészítést a források explicit módon továbbítják a céloknak. Ezért a metódusok és Complete a Fault metódusok a célhoz kapcsolódnak, miközben a Completion tulajdonság a forráshoz csatlakozik. Gondoskodnia kell arról, hogy amikor a cél fele befejeződik, a forrás fele a legmegfelelőbb módon fejeződjön be; például:
target.Completion.ContinueWith(completion => source.Complete());
Vagy ha propagálja a befejezési típust, használhatja ezt a kifinomultabb kódot:
target.Completion.ContinueWith(completion => { if (completion.IsFaulted)
((IDataflowBlock)batchBlock).Fault(completion.Exception);
else
batchBlock.Complete();
});
Explicit módon kell megadnia az üzenet propagálását a célról a forrásra. Ennek az explicit kapcsolatnak az az előnye, hogy lehetővé teszi a két beágyazott blokk közötti korlátozás nélküli feldolgozást. Ezt megteheti a szükséges feldolgozás kódolásával a blokkok meghatalmazottjaiba (ha a blokkok delegáltakat fogadnak), vagy a blokkok alhálózatának beágyazásával. A legegyszerűbb módszer egy olyan blokk használata, amely a meghatalmazottakat veszi igénybe; például használjon ActionBlock<TInput>, TransformBlock<TInput,TOutput>, TransformManyBlock<TInput,TOutput> (ha van) vagy egyéni blokkot.