Anrufunterdrückung
Die Anrufabbruchbenachrichtigung bricht den Vorgang von serverseitigen Dienstvorgängen und Dienstmodellrückrufen ab. Eine solche Stornierung kann aus zwei Gründen erfolgen:
- Der Diensthost hat Vorgänge aufgrund eines Aufrufs der WsAbortServiceHost--Funktion beendet.
- Der zugrunde liegende Kanal hat einen Fehler ausgelöst.
Um eine Abbruchbenachrichtigung zu erhalten, muss der Dienstvorgang oder der Dienstmodellrückruf einen WS_OPERATION_CANCEL_CALLBACK Rückruf registrieren, indem die WsRegisterOperationForCancel-Funktion aufgerufen wird.
Optional kann der Dienstvorgang oder der Dienstmodellrückruf auch anwendungsspezifische Statusdaten und den WS_OPERATION_FREE_STATE_CALLBACK Rückruf registrieren.
Die Statusdaten werden dem WS_OPERATION_CANCEL_CALLBACK Rückruf zur Verfügung gestellt. Nach Abschluss des Anrufs wird der WS_OPERATION_FREE_STATE_CALLBACK Rückruf aufgerufen, um der Anwendung die Möglichkeit zu geben, die Statusdaten freizugeben.
Ein Codebeispiel finden Sie unter BlockingServiceExample.
Der Abbruchrückruf wird nur einmal für die Lebensdauer der serverseitigen Dienstvorgänge- oder Rückruffunktion aufgerufen.
Der Anrufabbruch ist für alle Diensthostrückrufe verfügbar, die WS_OPERATION_CONTEXT als Parameter annehmen.
Die folgenden API-Elemente beziehen sich auf die Anrufunterdrückung.
Rückruf | Beschreibung |
---|---|
WS_OPERATION_CANCEL_CALLBACK | Vom Dienstmodell aufgerufen, um einen Abbruch eines asynchronen Dienstvorgangs infolge eines abgebrochenen Herunterfahrens des Diensthosts zu benachrichtigen. |
WS_OPERATION_FREE_STATE_CALLBACK | Vom Dienstmodell aufgerufen, damit eine Anwendung Zustandsdaten bereinigen kann, die beim Abbruchrückruf registriert wurden. |
Funktion | Beschreibung |
---|---|
WsRegisterOperationForCancel | Ermöglicht es einem Dienstvorgang oder einem Dienstmodellrückruf, sich für eine Abbruchbenachrichtigung zu registrieren. |