Compartilhar via


Função de create_async

Cria uma compilação assíncrono em tempo de execução do windows com base em um objeto fornecido usuário lambda ou função.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 passado para o método.

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

Parâmetros

  • _Function

  • _Func
    O objeto lambda ou função de que para criar uma compilação assíncrono em tempo de execução do windows.

Valor de retorno

Uma compilação assíncrono é representada por um ^ de IAsyncAction^, de IAsyncActionWithProgress<TProgress>, por ^ de IAsyncOperation<TResult>, ou por um ^ de IAsyncOperationWithProgress<TResult, TProgress>.A interface retornado depende da assinatura lambda passado a função.

Comentários

O tipo de retorno do método determina se a compilação é uma ação ou operação.

Lambdas que retorna a causa vaga a criação de ações.Lambdas que retorna um resultado da causa de TResult de tipo a criação de operações de TResult.

O método também pode retornar task<TResult> que encapsula o trabalho aysnchronous dentro de se ele é a seguir de uma cadeia das tarefas que representam o trabalho assíncrono.Em esse caso, o próprio método é executado internamente, desde que as tarefas que são executados de forma assíncrona, e o tipo de retorno lambda é desempacotado para gerar a compilação assíncrono retornada por create_async.Isso significa que um método que retorna uma tarefa<void> fará com que a criação de ações, e um método que retorna uma tarefa<TResult> fará com que a criação de operações de TResult.

O método pode ter um ou outro zero, um ou dois argumentos.Os argumentos são válidos progress_reporter<TProgress> e cancellation_token, em essa ordem se ambos são usados.Um lambda sem argumentos faz com que a criação de uma compilação assíncrona sem o recurso para o relatório de progresso.Um método que recebe um progress_reporter<TProgress> fará com que create_async retorna uma compilação assíncrono que relata o andamento do tipo TProgress cada vez de report o método do objeto de progress_reporter é chamado.Um método que recebe um cancellation_token pode usar esse token para verificar cancelamento, ou passe-o às tarefas que cria para que o cancelamento de compilação assíncrono faz com cancelamento de essas tarefas.

Se o corpo do objeto lambda ou função retorna um resultado (e não uma tarefa<TResult>), o lamdba será executado de forma assíncrona MTA dentro do processo no contexto de uma tarefa que o tempo de execução cria implicitamente para ele.O método de IAsyncInfo::Cancel causará cancelamento de tarefa implícita.

Se o corpo do método retorna uma tarefa, o lamba executa em linha, e declarando o método para tomá-lo a um argumento de tipo cancellation_token pode acionar cancelamento de todas as tarefas que você criar no lambda passando em esse token quando você as cria.Você também pode usar o método de register_callback no símbolo para fazer com que o tempo de execução chama um retorno de chamada quando você chama IAsyncInfo::Cancel na operação ou em ação de async gerada.

Essa função só está disponível para apps de Windows Store .

Requisitos

Cabeçalho: ppltasks.h

Simultaneidade denamespace:

Consulte também

Referência

simultaneidade Namespace

Classe Task

progress_reporter classe

Outros recursos

cancelation_token Class