Função create_async
Cria uma construção assíncrona Tempo de Execução do Windows baseada em um objeto fornecido de função ou lambda de usuário. O tipo de retorno de create_async é um de IAsyncAction^, de IAsyncActionWithProgress<TProgress>^, de IAsyncOperation<TResult>^, ou de IAsyncOperationWithProgress<TResult, TProgress>^ baseado na assinatura lambda passada para o método.
template<
typename _Function
>
__declspec(
noinline
) auto create_async(const _Function& _Func) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));
Parâmetros
_Function
_Func
O lambda ou objeto da função da qual deve ser criada uma construção assíncrona do Tempo de Execução do Windows.
Valor de retorno
Uma compilação assíncrona é representada por IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, ou um IAsyncOperationWithProgress<TResult, TProgress>^. A interface retornada depende da assinatura lambda passada à função.
Comentários
O tipo de retorno lambda determina se a compilação é uma ação ou uma operação.
Lambdas que retornam nulo causam a criação de ações. Lambdas que retornam um resultado do tipo TResult causam a criação de operações TResult.
O lambda também pode retornar task<TResult> que encapsula o trabalho aysnchronous dentro dele mesmo ou é a continuação de uma cadeia das tarefas que representam o trabalho assíncrono. Nesse caso, o próprio lambda é executado internamente, uma vez que as tarefas são as que são executadas assincronamente e o tipo de retorno do lambda será desempacotado para produzir a construção assíncrona retornada por create_async. Isso significa que um lambda que retorna uma tarefa<void> resultará na criação de ações, e um lambda que retorna uma tarefa<TResult> resultará na criação de operações de TResult.
O lambda pode ter zero, um ou dois argumentos. Os argumentos válidos são progress_reporter<TProgress> e cancellation_token, nessa ordem, se ambos forem usados. Um lambda sem argumentos resulta na criação de uma compilação assíncrona sem o recurso para o relatório de progresso. Um lambda que utiliza progress_reporter<TProgress> fará com que create_async retorne uma compilação assíncrono que relata o andamento do tipo TProgress cada vez que o método de report do objeto de progress_reporter é chamado. Um lambda que utiliza um cancellation_token pode usar esse token para verificar cancelamento, ou passá-lo para tarefas que cria de modo que o cancelamento de compilação assíncrona cause o cancelamento dessas tarefas.
Se o corpo do objeto de função ou lambda retorna um resultado (e não uma tarefa<TResult>), o lamdba será executado de forma assíncrona no processo MTA no contexto de uma tarefa que o tempo de execução cria implicitamente para ele. O método IAsyncInfo::Cancel causará cancelamento de tarefa implícita.
Se o corpo do lambda retornar uma tarefa, o lamba será executado em linha, e declarando o lambda para obter um argumento do tipo cancellation_token, você poderá acionar o cancelamento de todas as tarefas que criar no lambda transmitindo esse token quando as cria. Você também pode usar o método de register_callback no token para fazer com que o tempo de execução chame um retorno de chamada quando você chamar IAsyncInfo::Cancel na operação ou em ação síncrona produzida.
Essa função está disponível somente para aplicativos do Windows Store.
Requisitos
Cabeçalho: ppltasks.h
Namespace: simultaneidade
Consulte também
Referência
Outros recursos
cancelation_token Class