Compartilhar via


Função WsAsyncExecute (webservices.h)

Função auxiliar para implementar uma operação assíncrona .

Sintaxe

HRESULT WsAsyncExecute(
  [in]           WS_ASYNC_STATE         *asyncState,
  [in, optional] WS_ASYNC_FUNCTION      operation,
  [in]           WS_CALLBACK_MODEL      callbackModel,
  [in]           void                   *callbackState,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Parâmetros

[in] asyncState

Um ponteiro para a estrutura de WS_ASYNC_STATE usada durante a operação assíncrona. Esse é um parâmetro de manutenção de estado não destinado ao uso direto. O aplicativo deve alocar a estrutura WS_ASYNC_STATE e garantir que ela seja mantida ativa durante toda a operação assíncrona. A estrutura WS_ASYNC_STATE pode ser reutilizado após a conclusão de uma operação assíncrona.

[in, optional] operation

Representa a operação assíncrona inicial a ser executada.

[in] callbackModel

Indica se o retorno de chamada está sendo invocado longo ou curto. Para obter mais informações, consulte WS_CALLBACK_MODEL

[in] callbackState

Um ponteiro nulo para um valor definido pelo usuário que é passado para cada WS_ASYNC_FUNCTION.

[in, optional] asyncContext

Ponteiro para informações para invocar a função de forma assíncrona. Passe NULL para invocar a função de forma síncrona.

[in, optional] error

Ponteiro para uma estrutura WS_ERROR que recebe informações de erro adicionais se a função falhar.

Valor retornado

Se a função for bem-sucedida, ela retornará NO_ERROR; caso contrário, ele retornará um código de erro HRESULT.

Comentários

Para entender como o WWSAPI lida com operações assíncronas, consulte o tópico Modelo Assíncrono .

Em muitos casos, uma operação assíncrona é composta por outras operações assíncronas. Cada operação assíncrona pode retornar WS_S_ASYNC indicando que o retorno de chamada será invocado ou qualquer outro código de êxito ou falha; nesse caso, o retorno de chamada não será invocado. A operação deve estar preparada para aceitar uma WS_ASYNC_CONTEXT NULL indicando que o chamador está solicitando que a operação seja executada de forma síncrona. Ele também deve garantir que o retorno de chamada seja invocado adequadamente. Em operações assíncronas complexas, WsAsyncExecute simplifica esses detalhes.

O WsAsyncExecute opera invocando um retorno de chamada definido pelo usuário que pode iniciar uma operação assíncrona e indicar uma função a ser invocada quando a operação assíncrona for concluída. Essa sequência continua até que o retorno de chamada não defina outra função a ser invocada. Neste ponto, o retorno de chamada especificado pelo WS_ASYNC_CONTEXT será invocado se qualquer uma das operações for concluída de forma assíncrona.

O parâmetro WS_ASYNC_STATE é usado por WsAsyncExecute para manter seu estado e não se destina a ser inicializado, inspecionado ou usado pelo chamador. No entanto, o chamador deve alocar o WS_ASYNC_STATE e garantir que ele seja mantido ativo durante toda a operação assíncrona. O WS_ASYNC_STATE pode ser reutilizado depois que a operação assíncrona for concluída.

Os exemplos AsyncAdd3ExplicitExample e AsyncAdd3ImplicitExample demonstram a implementação da mesma função assíncrona manualmente usando WsAsyncExecute.

Requisitos

   
Cliente mínimo com suporte Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho webservices.h
Biblioteca WebServices.lib
DLL WebServices.dll