Asynchroner und synchroner Speicher
Asynchrone Moniker können auch ein Asynchronous Storage-Objekt in der IBindStatusCallback::OnDataAvailable-Benachrichtigung zurückgeben. Dieses Speicherobjekt ermöglicht möglicherweise den Zugriff auf einige persistente Daten des Objekts, während die Bindung noch ausgeführt wird. Ein Client kann zwischen zwei Modi für den Speicher wählen: Blockieren und Nichtblockieren.
Im Blockierungsmodus, der mit aktuellen Implementierungen von Speicherobjekten kompatibel ist, blockiert der Aufruf, wenn Daten nicht verfügbar sind, bis die Daten eintreffen. Im Nichtblockierungsmodus gibt das Speicherobjekt einen neuen Fehler E_PENDING, wenn Daten nicht verfügbar sind, anstatt den Aufruf zu blockieren. Ein Client, der sich der asynchronen Bindung und des Speichers bewusst ist, notiert diesen Fehler und wartet auf weitere Benachrichtigungen (OnDataAvailable), um den Vorgang erneut auszuführen. Ein Client kann zwischen einem synchronen (blockierenden) und einem asynchronen (nicht blockierenden) Speicher wählen, indem er auswählen möchte, ob das BINDF_ASYNCSTORAGE-Flag im grfBINDF-Wert festgelegt werden soll, der an IBindStatusCallback::GetBindInfo zurückgegeben wird.
Zugehörige Themen