Condividi tramite


Funzione create_async

Crea un costrutto asincrono runtime di windows in base a un'espressione lambda o su un oggetto funzione fornita utente.Il tipo restituito di create_async è uno di IAsyncAction^, di IAsyncActionWithProgress<TProgress>^, di IAsyncOperation<TResult>^, o di IAsyncOperationWithProgress<TResult, TProgress>^ basato sulla firma della lambda passata al metodo.

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

Parametri

  • _Function

  • _Func
    L'espressione lambda o l'oggetto funzione da cui creare un costrutto asincrono runtime di windows.

Valore restituito

Un costrutto asincrono rappresentato da un ^ di IAsyncActionWithProgress, di IAsyncAction^<TProgress>, da ^ di IAsyncOperation<TResult>, o da un ^ di IAsyncOperationWithProgress<TResult, TProgress>.L'interfaccia restituita dipende dalla firma della lambda è viene trasformata la funzione.

Note

Il tipo restituito della lambda determina se il costrutto è un'operazione o un'operazione.

Espressioni lambda che restituisce la causa void la creazione delle azioni.Espressioni lambda che restituisce un risultato del test di TResult del tipo la creazione delle operazioni di TResult.

L'espressione lambda possibile tornare task<TResult> che incapsula il lavoro asincrono se stesso o è la continuazione di una catena delle attività che rappresentano il lavoro asincrono.In questo caso, l'espressione lambda stessa viene resa inline eseguito, poiché le attività sono quelle eseguite in modo asincrono e il tipo restituito della lambda è stato estratto produrre il costrutto asincrono restituito da create_async.Ciò implica che un'espressione lambda che restituisce un'attività<void> provoca la creazione delle azioni e un'espressione lambda che restituisce un'attività<TResult> determina la creazione delle operazioni di TResult.

L'espressione lambda può intraprendere qualsiasi zero, uno o due argomento.Gli argomenti validi sono progress_reporter<TProgress> e cancellation_token, in quest'ordine se entrambi vengono utilizzati.Un'espressione lambda senza argomenti determina la creazione di un costrutto asincrono senza la funzionalità per la segnalazione dello stato di avanzamento.Un'espressione lambda che accetta un progress_reporter<TProgress> modo create_async a restituire un costrutto asincrono che lo stato di avanzamento dei rapporti di tipo TProgress ogni volta che il metodo di report dell'oggetto del progress_reporter viene chiamato.Un'espressione lambda che accetta un cancellation_token possibile utilizzare il token per verificare l'annullamento, o lo passa alle attività create in modo che l'annullamento del costrutto asincrono per causare l'annullamento delle attività.

Se il corpo della lambda o dell'oggetto funzione restituisce un risultato (e non un'attività<TResult>), il lambda verrà eseguito in modo asincrono in MTA di processo nel contesto di un'attività che il runtime creano in modo implicito per.Il metodo di IAsyncInfo::Cancel determina l'annullamento dell'attività implicita.

Se il corpo della lambda restituita un'attività, il lamba esegue inline e dichiarando lambda per accedere a un argomento di tipo cancellation_token possibile attivare l'annullamento di tutte le attività create all'interno della lambda passando il token in in fase di creazione.È anche possibile utilizzare il metodo di register_callback nel token per fare in modo che il runtime per richiamare un callback quando si chiama IAsyncInfo::Canceloperazione o nell'azione async prodotto.

Questa funzione è disponibile solo per le applicazioni di stile di metropolitana.

Requisiti

intestazione: ppltasks.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Spazio dei nomi concurrency

classe di attività

Classe progress_reporter

Altre risorse

cancelation_token Class