Teilen über


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB-Treiber herunterladen

Wartet, bis der asynchron ausgeführte Vorgang abgeschlossen ist oder ein Timeout auftritt.

Syntax

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Argumente

dwMillisecTimeOut[in]
Timeout in Millisekunden.

Rückgabecodewerte

S_OK
Die Methode wurde erfolgreich ausgeführt.

E_UNEXPECTED
Ein Rowset wird nicht verwendet, da ITransaction::Commit oder ITransaction::Abort aufgerufen oder das Rowset während der ursprünglichen Initialisierungsphase abgebrochen wurde.

DB_E_CANCELED
Die asynchrone Verarbeitung wurde während der Auffüllung des Rowsets oder der Initialisierung des Datenquellobjekts abgebrochen.

DB_S_ASYNCHRONOUS
Der Vorgang wurde noch nicht abgeschlossen, obwohl das angegebene Timeout erreicht wurde.

Hinweis

Zusätzlich zu den oben aufgelisteten Rückgabecodewerten unterstützt die ISSAsynchStatus::WaitForAsynchCompletion -Methode auch die Rückgabecodewerte, die von der wichtigsten OLEDB ICommand::Execute - und IDBInitialize::Initialize -Methode zurückgegeben werden.

Bemerkungen

Die ISSAsynchStatus::WaitForAsynchCompletion -Methode gibt keine Werte zurück, bis der Timeoutwert (in Millisekunden) erreicht oder der ausstehende Vorgang abgeschlossen wurde. Das Command -Objekt weist eine CommandTimeout -Eigenschaft auf, die die Anzahl der Sekunden steuert, während denen eine Abfrage ausgeführt wird, bevor ein Timeout auftritt. Die CommandTimeout-Eigenschaft wird ignoriert, wenn sie in Verbindung mit der ISSAsynchStatus::WaitForAsynchCompletion-Methode verwendet wird.

Die Timeouteigenschaft wird für asynchrone Vorgänge ignoriert. Der Timeout-Parameter ISSAsynchStatus::WaitForAsynchCompletion gibt die maximale Zeitspanne an, die verstreicht, bevor die Steuerung an den Aufrufer zurückgegeben wird. Wenn dieses Timeout abläuft, wird DB_S_ASYNCHRONOUS zurückgegeben. Timeouts führen nie zum Abbruch asynchroner Vorgänge. Wenn die Anwendung einen asynchronen Vorgang, der nicht innerhalb des Timeouts abgeschlossen wurde, abbrechen muss, muss sie auf das Timeout warten und, falls DB_S_ASYNCHRONOUS zurückgegeben wird, anschließend den Vorgang explizit abbrechen.

Hinweis

Wenn die OLE DB-Dienstkomponenten verwendet werden, wird möglicherweise S_OK zurückgegeben, wenn eigentlich DB_S_ASYNCHRONOUS erwartet wird. Daher sollten Anwendungen ISSAsynchStatus::GetStatus aufrufen, um den Abschluss zu prüfen, wenn S_OK oder DB_S_ASYNCHRONOUS zurückgegeben wird.

Wenn der dwMillisecTimeOut -Wert auf INFINITE festgelegt wird, blockiert die ISSAsynchStatus::WaitForAsynchCompletion -Methode so lange, bis der Vorgang abgeschlossen ist. Wenn der dwMillisecTimeOut -Wert auf 0 festgelegt ist, gibt die Methode umgehend den Status des ausstehenden Vorgangs zurück. Wenn das Timeout abläuft, bevor der Vorgang abgeschlossen ist, wird DB_S_ASYNCHRONOUS zurückgegeben.

Wenn der Vorgang abgeschlossen ist, bevor das Timeout abläuft, entspricht der zurückgegebene HRESULT-Wert dem vom Vorgang zurückgegebenen HRESULT-Wert (dem HRESULT-Wert, der zurückgegeben worden wäre, wenn der Vorgang synchron ausgeführt worden wäre).

Außerdem wurde dem DBPROPSET_SQLSERVERROWSET-Eigenschaftensatz die SSPROP_ISSAsynchStatus-Eigenschaft hinzugefügt. Anbieter, die die ISSAsynchStatus-Schnittstelle unterstützen, müssen diese Eigenschaft mit dem Wert VARIANT_TRUE implementieren.

Weitere Informationen

Ausführen asynchroner Vorgänge
ISSAsynchStatus (OLE DB)