Condividi tramite


Funzione WsAsyncExecute (webservices.h)

Funzione helper per l'implementazione di un'operazione asincrona .

Sintassi

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
);

Parametri

[in] asyncState

Puntatore alla struttura WS_ASYNC_STATE utilizzata durante l'operazione asincrona. Si tratta di un parametro di manutenzione dello stato non destinato all'uso diretto. L'applicazione deve allocare la struttura WS_ASYNC_STATE e assicurarsi che venga mantenuta attiva durante l'intera operazione asincrona. La struttura WS_ASYNC_STATE può essere riutilizzata dopo il completamento di un'operazione asincrona.

[in, optional] operation

Rappresenta l'operazione asincrona iniziale da eseguire.

[in] callbackModel

Indica se il callback viene richiamato lungo o breve. Per altre informazioni, vedere WS_CALLBACK_MODEL

[in] callbackState

Puntatore void a un valore definito dall'utente passato a ogni WS_ASYNC_FUNCTION.

[in, optional] asyncContext

Puntatore a informazioni per richiamare la funzione in modo asincrono. Passare NULL per richiamare la funzione in modo sincrono.

[in, optional] error

Puntatore a una struttura WS_ERROR che riceve informazioni di errore aggiuntive se la funzione ha esito negativo.

Valore restituito

Se la funzione ha esito positivo, restituisce NO_ERROR; in caso contrario, restituisce un codice di errore HRESULT.

Commenti

Per informazioni sul modo in cui WWSAPI gestisce le operazioni asincrone, vedere l'argomento Modello asincrono .

In molti casi, un'operazione asincrona è costituita da altre operazioni asincrone. Ogni operazione asincrona può restituire WS_S_ASYNC che indica che il callback verrà richiamato o qualsiasi altro codice di esito positivo o negativo, in cui il callback non verrà richiamato. L'operazione deve essere preparata per accettare un WS_ASYNC_CONTEXT NULL che indica che il chiamante richiede l'esecuzione sincrona dell'operazione. Deve inoltre assicurarsi che il callback venga richiamato in modo appropriato. Nelle operazioni asincrone complesse WsAsyncExecute semplifica questi dettagli.

WsAsyncExecute opera richiamando un callback definito dall'utente che può avviare un'operazione asincrona e indicare una funzione da richiamare al termine dell'operazione asincrona. Questa sequenza continua fino a quando il callback non imposta un'altra funzione da richiamare. A questo punto, il callback specificato dal WS_ASYNC_CONTEXT verrà richiamato se una delle operazioni è stata completata in modo asincrono.

Il parametro WS_ASYNC_STATE viene usato da WsAsyncExecute per mantenere lo stato e non deve essere inizializzato, controllato o usato dal chiamante. Il chiamante deve tuttavia allocare il WS_ASYNC_STATE e assicurarsi che sia mantenuto attivo durante l'intera operazione asincrona. Il WS_ASYNC_STATE può essere riutilizzato al termine dell'operazione asincrona.

Gli esempi AsyncAdd3ExplicitExample e AsyncAdd3ImplicitExample illustrano l'implementazione manuale della stessa funzione asincrona usando WsAsyncExecute.

Requisiti

   
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione webservices.h
Libreria WebServices.lib
DLL WebServices.dll