Partager via


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Attend que l'opération s'exécutant de façon asynchrone se termine ou qu'un délai d'expiration soit dépassé.

Syntaxe

HRESULT WaitForAsynchCompletion( 
        DWORD dwMillisecTimeOut);

Argument

  • dwMillisecTimeOut[in]
    Délai en millisecondes.

Valeurs de code de retour

  • S_OK
    La méthode a réussi.

  • 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 le remplissage de l'ensemble de lignes ou l'initialisation de l'objet source de données.

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

[!REMARQUE]

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

Notes

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

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

[!REMARQUE]

Lors de l'utilisation d'OLE DB Service Components, S_OK peut être retourné lorsque DB_S_ASYNCHRONOUS est attendu ; par conséquent, les applications doivent appeler ISSAsynchStatus::GetStatus pour vérifier l'état d'achèvement lorsque S_OK ou DB_S_ASYNCHRONOUS est retourné.

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

Si l'opération se termine avant l'expiration du délai d'attente, le HRESULT retourné correspond au HRESULT retourné par l'opération (HRESULT retourné si l'opération était effectuée de façon synchrone).

De plus, 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 VARIANT_TRUE.