Compartilhar via


Função create_async (C++ REST SDK)

Cria uma construção assíncrona de Tempo de execução do Windows com base em um objeto de função ou lambda fornecido pelo usuário. O tipo de retorno de create_async é IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ ou IAsyncOperationWithProgress<TResult, TProgress>^ com base na assinatura do lambda passada para o método.

Aviso

Este tópico contém informações para o C++ REST SDK 1.0 (codinome "Casablanca").Se você estiver usando uma versão mais recente da página da Web do Codeplex Casablanca, use então a documentação local em http://casablanca.codeplex.com/documentation.

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

Parâmetros

  • _Function

  • _Func
    O objeto de lambda ou função a partir do qual criar uma construção assíncrona de Tempo de execução do Windows.

Valor de retorno

Uma construção assíncrona representada por um IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ ou um IAsyncOperationWithProgress<TResult, TProgress>^. A interface retornada depende de assinatura do lambda passada na função.

Comentários

O tipo de retorno do lambda determina se a construção é uma ação ou uma operação.

Lambdas que retornam void causam a criação de ações. Lambdas que retornam um resultado do tipo TResult causam a criação de operações de TResult.

Lambda também pode retornar um task<TResult> que encapsula o trabalho assíncrono em si mesmo ou é a continuação de uma cadeia de tarefas que representam o trabalho assíncrono. Nesse caso, o próprio lambda é executado em linha, uma vez que as tarefas são aqueles que são executadas de forma assíncrona e o tipo de retorno do lambda é desencapsulado para produzir a construção assíncrona retornada por create_async. Isso significa que um lambda que retorna uma tarefa <void> causará a criação de ações e um lambda que retorna uma tarefa <TResult> causará a criação de operações de TResult.

O lambda pode usar 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 causará a criação de uma construção assíncrona sem o recurso de relatório de andamento. Um lambda que usa um progress_reporter<TProgress> fará com que create_async retorne uma construção assíncrona que relata o andamento do tipo TProgress sempre que o método report do objeto progress_reporter for chamado. Um lambda que usa um cancellation_token pode usar esse token para verificar se há cancelamento ou passá-lo para tarefas que ele cria para que o cancelamento da construção assíncrona cause o cancelamento dessas tarefas.

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

Se o corpo do lambda retorna uma tarefa, o lambda será executado em linha e declarando-se o lambda para usar um argumento do tipo cancellation_token pode disparar o cancelamento de quaisquer tarefas criadas dentro do lambda passando esse token quando você as cria. Você também pode usar o método register_callback no token para fazer com que o Tempo de execução invoque um retorno de chamada ao chamar IAsyncInfo::Cancel na operação assíncrona ou na ação produzida.

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

Requisitos

Cabeçalho: pplxtasks.h

Namespace: pplx

Consulte também

Referência

Namespace pplx

Classe task

Classe progress_reporter

Outros recursos

cancelation_token Class