Partager via


ISSAsynchStatus ::WaitForAsynchCompletion (OLE DB)

Attend que l’opération en cours d’exécution asynchrone soit terminée ou jusqu’à ce qu’un délai d’attente se produise.

Syntaxe

  
HRESULT WaitForAsynchCompletion(   
  DWORD dwMillisecTimeOut);  

Les arguments

dwMillisecTimeOut[in]
Délai d’expiration en millisecondes.

Codet de retour

S_OK
S_OK

E_UNEXPECTED
Un ensemble de lignes est dans un état inutilisé, car ITransaction ::Commit ou ITransaction ::Abort a été appelé ou l’ensemble de lignes a été annulé pendant sa phase d’initialisation.

DB_E_CANCELED
Le traitement asynchrone a été annulé pendant l’initialisation de l’objet de l’ensemble de lignes ou de la source de données.

DB_S_ASYNCHRONOUS
L’opération n’est pas encore terminée même si le délai d’attente spécifié a été atteint.

Remarque

Outre les valeurs de code renvoyées répertoriées ci-dessus, la méthode ISSAsynchStatus ::WaitForAsynchCompletion prend également en charge les valeurs de code de retour retournées par les principales méthodes OLEDB ICommand ::Execute et IDBInitialize ::Initialize .

Remarques

La méthode ISSAsynchStatus ::WaitForAsynchCompletion ne retourne pas tant que la valeur de délai d’attente (en millisecondes) n’est pas passée ou que l’opération en attente est terminée. L’objet Command a une propriété CommandTimeout qui contrôle le nombre de secondes qu’une requête s’exécute avant l’expiration du délai d’attente. La propriété CommandTimeout est ignorée si elle est utilisée conjointement avec la méthode ISSAsynchStatus ::WaitForAsynchCompletion .

La propriété de délai d’attente est ignorée pour les opérations asynchrones. Le paramètre de délai d’attente de ISSAsynchStatus ::WaitForAsynchCompletion spécifie la durée maximale qui s’écoule avant que le contrôle ne soit retourné à l’appelant. Si ce délai expire, DB_S_ASYNCHRONOUS sera retourné. Les délais d’attente n’annulent jamais les opérations asynchrones. Si l’application doit annuler une opération asynchrone qui ne se termine pas dans un délai d’attente, elle doit attendre le délai d’attente, puis annuler explicitement l’opération si DB_S_ASYNCHRONOUS est retournée.

Remarque

Lorsque les composants du service OLE DB sont utilisés, S_OK peut être retourné lorsque DB_S_ASYNCHRONOUS est attendu, de sorte que les applications doivent appeler ISSAsynchStatus ::GetStatus pour vérifier la fin lorsque S_OK ou DB_S_ASYNCHRONOUS est retourné.

Si la valeur dwMillisecTimeOut est définie sur INFINITE, la méthode ISSAsynchStatus ::WaitForAsynchCompletion bloque jusqu’à ce que l’opération soit terminée. Si la valeur dwMillisecTimeOut est définie sur 0, la méthode retourne immédiatement avec l’état de l’opération en attente. Si le délai d’expiration expire avant la fin de l’opération, DB_S_ASYNCHRONOUS sera retourné.

Si l’opération se termine avant l’expiration du délai d’expiration, hrESULT retourné est HRESULT retourné par l’opération (HRESULT qui aurait été retourné si l’opération a été effectuée de manière synchrone).

En outre, la propriété SSPROP_ISSAsynchStatus a été ajoutée au jeu de propriétés DBPROPSET_SQLSERVERROWSET. Les fournisseurs qui prennent en charge l’interface ISSAsynchStatus doivent implémenter cette propriété avec la valeur de VARIANT_TRUE.

Voir aussi

Exécution d’opérations asynchrones
ISSAsynchStatus (OLE DB)