Sdílet prostřednictvím


create_async – funkce

Vytvoří asynchronní konstrukt Windows Runtime založený na uživatelem zadanou hodnotu lambda nebo objekt funkce.Návratový typ create_async je buď IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, nebo IAsyncOperationWithProgress<TResult, TProgress>^ v závislosti na signatuře lambdy předané metodě.

template<
   typename _Function
>
__declspec(
   noinline
) auto create_async(const _Function& _Func) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));

Parametry

  • _Function

  • _Func
    Výraz lambda nebo objekt funkce, ze kterého je vytvořen asynchronní konstrukt Windows Runtime.

Vrácená hodnota

Asynchronní konstrukce reprezentované IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ nebo IAsyncOperationWithProgress<TResult, TProgress>^.Vrácené rozhraní závisí na podpis lambda předaného do funkce.

Poznámky

Návratový typ lambdy určuje, zda je konstrukce akce nebo operace.

Výrazy lambda, které vrací neplatnou hodnotu, způsobují vytváření akcí.Výrazy lambda, které vrací výsledek typu TResult, způsobují vytváření operací TResult.

Může také vracet lambda task<TResult>, které zapouzdřuje asynchronní práci sám nebo je pokračováním posloupnosti úkolů, které představují asynchronní práci.V tomto případě je samotný výraz lambda vykonán jako vložený, protože úlohy jsou ty, které se spouštějí asynchronně, a návratový typ výrazu lambda je neobalený, aby vytvořil asynchronní konstrukt vrácený funkcí create_async.Z toho vyplývá, že lambda, která vrátí task<void>, způsobí vytvoření akcí a lambda, která vrací task<TResult> bude mít za následek vytvoření operací TResult.

Lambda může mít nula, jeden nebo dva argumenty.Platné argumenty jsou progress_reporter<TProgress> a cancellation_token v tomto pořadí, pokud se oba používají.Lambda bez argumentů způsobí vytvoření asynchronní konstrukce bez možnosti pro vykazování průběhu.Lambda, která používá progress_reporter<TProgress>, způsobí, že create_async vrátí asynchronní konstrukci, která hlásí průběh typu TProgress pokaždé, když je volána metoda report objektu progress_reporter.Lambda, která trvá cancellation_token může pomocí tohoto tokenu zkontrolovat zrušení nebo je předat úkolům, které se vytvoří, aby zrušení asynchronní konstrukce způsobilo zrušení těchto úkolů.

Pokud hlavní část výrazu lambda nebo objektu funkce vrátí výsledek (a ne úlohu <TResult>), výraz lambda bude spuštěn asynchronně v rámci procesu MTA v kontextu úlohy, kterou pro něj modul Runtime implicitně vytvoří.Metoda IAsyncInfo::Cancel způsobí zrušení implicitního úkolu.

Pokud hlavní část výrazu lambda vrátí úlohu, výraz lambda bude spuštěn jako vložený, a deklarováním výrazu lambda pro příjem argumentu typu cancellation_token můžete vyvolat zrušení všech úloh, které vytvoříte v rámci výrazu lambda předáním tohoto tokenu při jejich vytváření.Můžete také použít metodu register_callback v tokenu k vyvolání zpětného volání pomocí běhového modulu při volání metody IAsyncInfo::Cancel v asynchronní operaci nebo provedené akci.

Tato funkce je k dispozici pouze pro aplikace pro web Windows Store.

Požadavky

Záhlaví: ppltasks.h

Obor názvů: souběžnost

Viz také

Referenční dokumentace

concurrency – obor názvů

task – třída

progress_reporter – třída

Další zdroje

cancelation_token Class