Abbrechen eines asynchronen Aufrufs
Ein Client kann einen asynchronen Aufruf abbrechen, der ausgeführt wird, wenn das Aufrufobjekt die ICancelMethodCalls-Schnittstelle implementiert. Für Objekte, die standardmäßiges Marshalling verwenden, ist ICancelMethodCalls immer für gemarshallte Aufrufe verfügbar. Für Objekte, die benutzerdefiniertes Marshalling oder Aufrufe von Serverobjekten innerhalb desselben Apartment verwenden, ist diese Funktionalität nur verfügbar, wenn das Aufrufobjekt ICancelMethodCalls implementiert.
Der Client kann den Aufruf jederzeit abbrechen, von dem Zeitpunkt, an dem die _ Begin-Methode aufgerufen wird, bis die Finish-Methode _ zurückgegeben wird. Wenn der Client den Aufruf vor dem Aufrufen der _ Finish-Methode abbricht, muss er die Finish-Methode _ aufrufen, um den Zustand des Aufrufobjekts zu bereinigen. Bis der Client dies getan hat, geben alle Aufrufe einer _ Begin-Methode für das Aufrufobjekt RPC E _ CALL _ _ PENDING zurück.
So brechen Sie einen asynchronen Aufruf ab
Fragen Sie das Aufrufobjekt für ICancelMethodCalls ab.
Rufen Sie ICancelMethodCalls::Cancelauf, und rufen Sie dann Release auf, um den Zeiger freizugeben, der durch den QueryInterface-Aufruf in Schritt 1 abgerufen wurde.
Wenn der Client die Finish-Methode noch nicht aufgerufen _ hat, rufen Sie sie jetzt auf.
Es gibt keine Garantie, dass der Server die Ausführung des Aufrufs tatsächlich beendet hat. Wenn die weitere Arbeit des Clients von einem Serverzustand abhängt, der sich möglicherweise geändert hat, sollte der Client diesen Zustand bestimmen, bevor er fortfährt.