Funzione create_async (C++ REST SDK)
Crea un costrutto asincrono di Windows Runtime in base a un'espressione lambda o un oggetto funzione fornito dall'utente. Il tipo restituito create_async è uno tra IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ o IAsyncOperationWithProgress<TResult, TProgress>^ in base alla firma dell'espressione lambda passata al metodo.
Avviso
In questo argomento vengono fornite informazioni per C++ REST SDK 1.0 (nome in codice "Casablanca").Se si sta usando una versione più recente dalla pagina Web di Codeplex Casablanca, usare la documentazione locale all'indirizzo http://casablanca.codeplex.com/documentation.
template< typename _Function > __declspec( noinline ) auto create_async(const _Function& _Func) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));
Parametri
_Function
_Func
Espressione lambda o oggetto funzione da cui si crea un costrutto asincrono di Windows Runtime.
Valore restituito
Costrutto asincrono rappresentato da IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, o IAsyncOperationWithProgress<TResult, TProgress>^. L'interfaccia restituita dipende dalla firma dell'espressione lambda passata nella funzione.
Note
Il tipo restituito dell'espressione lambda determina se il costrutto è un'azione o un'operazione.
Le espressioni lambda tramite cui viene restituito void comportano la creazione di azioni. Le espressioni lambda tramite cui viene restituito un risultato di tipo TResult comportano la creazione di operazioni TResult.
L'espressione lambda può inoltre restituire task<TResult> che incapsula il lavoro asincrono o è la continuazione di una catena di attività che rappresentano il lavoro asincrono. In questo caso, la stessa espressione lambda viene eseguita inline, poiché le attività sono quelle che vengono eseguite in modo asincrono e viene rimosso il wrapping del tipo restituito dell'espressione lambda per generare il costrutto asincrono restituito da create_async. Ciò implica che un'espressione lambda che restituisce task<void> causerà la creazione di azioni e un'espressione lambda che restituisce task<TResult> causerà la creazione di operazioni TResult.
L'espressione lambda può accettare zero, uno o due argomenti. Gli argomenti validi sono progress_reporter<TProgress> e cancellation_token, in questo ordine se vengono usati entrambi. 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> farà in modo che create_async restituisca un costrutto asincrono che segnala lo stato di avanzamento di tipo TProgress ogni volta che viene chiamato il metodo report dell'oggetto progress_reporter. Un'espressione lambda che accetta un cancellation_token può usare tale token per verificare l'annullamento oppure passarlo alle attività create in modo che l'annullamento del costrutto asincrono provochi l'annullamento di tali attività.
Se tramite il corpo di lambda o l'oggetto funzione viene restituito un risultato (e non task<TResult>), l'espressione lambda verrà eseguita in modo asincrono nell'MTA di processo nel contesto di un'attività per la quale viene creato in modo implicito l'oggetto runtime. Il metodo IAsyncInfo::Cancel determina l'annullamento dell'attività implicita.
Se tramite il corpo di lambda viene restituita un'attività, lambda viene eseguito inline e, dichiarando che nel lambda viene accettato un argomento di tipo cancellation_token, è possibile attivare l'annullamento delle attività create all'interno di lambda passando il token quando vengono create. È inoltre possibile usare il metodo register_callback sul token per fare in modo che il runtime richiami un callback quando si chiama IAsyncInfo::Cancel sull'operazione async o sull'azione prodotta.
Questa funzione è disponibile solo per le applicazioni Windows Store.
Requisiti
Intestazione: pplxtasks.h
Spazio dei nomi: pplx
Vedere anche
Riferimenti
Altre risorse
cancelation_token Class