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 |