Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Metoda DataflowBlock.Encapsulate<TInput, TOutput> (ITargetBlock<TInput>, ISourceBlock<TOutput>)

 

Zapouzdří do jednoho Šiřitel cíl a zdroj.

Obor názvů:   System.Threading.Tasks.Dataflow
Sestavení:  System.Threading.Tasks.Dataflow (v System.Threading.Tasks.Dataflow.dll)

public static IPropagatorBlock<TInput, TOutput> Encapsulate<TInput, TOutput>(
	ITargetBlock<TInput> target,
	ISourceBlock<TOutput> source
)

Parametry

target
Type: System.Threading.Tasks.Dataflow.ITargetBlock<TInput>

Cíl, který má být zapouzdřena.

source
Type: System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>

Zdroj, který má být zapouzdřena.

Návratová hodnota

Type: System.Threading.Tasks.Dataflow.IPropagatorBlock<TInput, TOutput>

Obsah zapouzdřeného cíl a zdroj.

Parametry typu

TInput

Určuje typ vstupu očekávanou cíl.

TOutput

Určuje typ výstupu zdroje.

Encapsulate<TInput, TOutput> Metoda vyžaduje dva existující bloky: cílový blok (instance třídy, který implementuje ITargetBlock<TInput>) a blok zdroje (instance třídy, který implementuje ISourceBlock<TOutput>). Encapsulate<TInput, TOutput> Vytvoří novou instanci třídy interní třída, která se připojuje ITargetBlock<TInput> rozhraní členy target parametr a ISourceBlock<TOutput> rozhraní členy source parametr. Obě ITargetBlock<TInput> a ISourceBlock<TOutput> odvozena od IDataflowBlock. Blok dokončení předán explicitně ze zdroje do cíle. Proto Complete a Fault metody jsou připojené k cílové při Completion vlastnost je připojený ke zdroji. Ujistěte se, že když cíl polovinu dokončení zdroji polovinu získá dokončit nejvhodnějším způsobem; například:

target.Completion.ContinueWith(completion => source.Complete());

Nebo, pokud chcete rozšířit typ dokončení, můžete tento sofistikovanější kód:

target.Completion.ContinueWith(completion => { if (completion.IsFaulted) 3 

((IDataflowBlock)batchBlock).Fault(completion.Exception); 
else 
batchBlock.Complete(); 
});

Je nutné zadat také explicitně šíření zprávy z cíle ke zdroji. Výhodou tohoto explicitní připojení je, že nabízí možnost používat tato zařízení k provedení jakékoli neomezeným zpracovávání mezi dva zapouzdřené bloky. Může to uděláte kódování nezbytné zpracování do na bloky delegáti (Pokud na bloky delegáti), nebo vložením síť dílčí bloky mezi nimi. Jednodušší způsob je použití bloku, která přebírá delegáti; například použít ActionBlock<TInput>, TransformBlock<TInput, TOutput>, TransformManyBlock<TInput, TOutput> (pokud existuje), nebo vlastní blok.

Zpět na začátek
Zobrazit: