Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wartet, bis der asynchron ausgeführte Vorgang abgeschlossen ist oder bis ein Timeout auftritt.
Syntax
HRESULT WaitForAsynchCompletion(
DWORD dwMillisecTimeOut);
Argumente
dwMillisecTimeOut[in]
Timeout in Millisekunden.
Rückgabecodewerte
S_OK
Die Methode war erfolgreich.
E_UNERWARTET
Ein Rowset befindet sich in einem nicht verwendeten Zustand, da ITransaction::Commit oder ITransaction::Abort aufgerufen wurde oder das Rowset während der Initialisierungsphase abgebrochen wurde.
DB_E_CANCELED
Die asynchrone Verarbeitung wurde während der Rowsetgesamtheit oder der Initialisierung des Datenquellenobjekts abgebrochen.
DB_S_ASYNCHRONOUS
Der Vorgang wurde noch nicht abgeschlossen, obwohl das angegebene Timeout erreicht wurde.
Hinweis
Zusätzlich zu den oben aufgeführten Rückgabecodewerten unterstützt die ISSAsynchStatus::WaitForAsynchCompletion-Methode auch die Rückgabecodewerte, die von den Kernmethoden OLEDB ICommand::Execute und IDBInitialize::Initialize zurückgegeben werden.
Bemerkungen
Die ISSAsynchStatus::WaitForAsynchCompletion-Methode wird erst zurückgegeben, wenn der Timeoutwert (in Millisekunden) übergeben wurde oder der ausstehende Vorgang abgeschlossen ist. Das Command-Objekt verfügt über eine CommandTimeout-Eigenschaft , die die Anzahl der Sekunden steuert, die eine Abfrage vor dem Timeout ausgeführt wird. 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 Timeoutparameter von ISSAsynchStatus::WaitForAsynchCompletion gibt die maximale Zeitspanne an, die verstrichen ist, bevor das Steuerelement an den Aufrufer zurückgegeben wird. Wenn dieses Timeout abläuft, wird DB_S_ASYNCHRONOUS zurückgegeben. Timeouts brechen niemals asynchrone Vorgänge ab. Wenn die Anwendung einen asynchronen Vorgang abbrechen muss, der nicht innerhalb eines Timeoutzeitraums abgeschlossen wird, muss er auf das Timeout warten und den Vorgang dann explizit abbrechen, wenn DB_S_ASYNCHRONOUS zurückgegeben wird.
Hinweis
Wenn die OLE DB-Dienstkomponenten verwendet werden, wird S_OK möglicherweise zurückgegeben, wenn DB_S_ASYNCHRONOUS erwartet wird. Daher sollten Anwendungen ISSAsynchStatus::GetStatus aufrufen, um nach Abschluss zu suchen, wenn S_OK oder DB_S_ASYNCHRONOUS zurückgegeben wird.
Wenn der dwMillisecTimeOut-Wert auf INFINITE festgelegt ist, wird die ISSAsynchStatus::WaitForAsynchCompletion-Methode blockiert, bis der Vorgang abgeschlossen ist. Wenn der dwMillisecTimeOut-Wert auf 0 festgelegt ist, wird die Methode sofort mit dem Status des ausstehenden Vorgangs zurückgegeben. 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, wird das zurückgegebene HRESULT vom Vorgang zurückgegeben (das HRESULT, das zurückgegeben würde, wenn der Vorgang synchron ausgeführt wurde).
Darüber hinaus wurde die SSPROP_ISSAsynchStatus-Eigenschaft dem DBPROPSET_SQLSERVERROWSET-Eigenschaftensatz hinzugefügt. Anbieter, die die ISSAsynchStatus-Schnittstelle unterstützen, müssen diese Eigenschaft mit dem Wert VARIANT_TRUE implementieren.