Compartir a través de


Función WsAsyncExecute (webservices.h)

Función auxiliar para implementar una operación asincrónica .

Sintaxis

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

Puntero a la estructura WS_ASYNC_STATE utilizada durante la operación asincrónica. Se trata de un parámetro de mantenimiento de estado que no está pensado para su uso directo. La aplicación debe asignar la estructura WS_ASYNC_STATE y asegurarse de que se mantiene activa durante toda la operación asincrónica. La estructura WS_ASYNC_STATE se puede reutilizar después de que se haya completado una operación asincrónica.

[in, optional] operation

Representa la operación asincrónica inicial que se va a realizar.

[in] callbackModel

Indica si la devolución de llamada se está invocando long o short. Para obtener más información, consulte WS_CALLBACK_MODEL

[in] callbackState

Puntero void a un valor definido por el usuario que se pasa a cada WS_ASYNC_FUNCTION.

[in, optional] asyncContext

Puntero a información para invocar la función de forma asincrónica. Pase NULL para invocar la función de forma sincrónica.

[in, optional] error

Puntero a una estructura de WS_ERROR que recibe información de error adicional si se produce un error en la función.

Valor devuelto

Si la función se realiza correctamente, devuelve NO_ERROR; de lo contrario, devuelve un código de error HRESULT.

Comentarios

Para obtener información sobre cómo WWSAPI controla las operaciones asincrónicas, consulte el tema Modelo asincrónico .

En muchos casos, una operación asincrónica se compone de otras operaciones asincrónicas. Cada operación asincrónica puede devolver WS_S_ASYNC que indique que se invocará la devolución de llamada, o cualquier otro código correcto o de error, en cuyo caso no se invocará la devolución de llamada. La operación debe estar preparada para aceptar un WS_ASYNC_CONTEXT NULL que indica que el autor de la llamada solicita que la operación se realice de forma sincrónica. También debe asegurarse de que la devolución de llamada se invoque correctamente. En operaciones asincrónicas complejas, WsAsyncExecute simplifica estos detalles.

WsAsyncExecute funciona invocando una devolución de llamada definida por el usuario que puede iniciar una operación asincrónica e indicar una función que se invocará cuando se complete la operación asincrónica. Esta secuencia continúa hasta que la devolución de llamada no establece otra función que se invoque. En este momento, se invocará la devolución de llamada especificada por el WS_ASYNC_CONTEXT si alguna de las operaciones se completó de forma asincrónica.

WsAsyncExecute usa el parámetro WS_ASYNC_STATE para mantener su estado y no está pensado para inicializarse, inspeccionarse o usarse por el autor de la llamada. Sin embargo, el autor de la llamada debe asignar el WS_ASYNC_STATE y asegurarse de que se mantiene activo durante toda la operación asincrónica. El WS_ASYNC_STATE se puede reutilizar una vez completada la operación asincrónica.

Los ejemplos AsyncAdd3ExplicitExample y AsyncAdd3ImplicitExample muestran la implementación manual de la misma función asincrónica mediante WsAsyncExecute.

Requisitos

   
Cliente mínimo compatible Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado webservices.h
Library WebServices.lib
Archivo DLL WebServices.dll