Anulowanie połączenia
Powiadomienie o anulowaniu wywołania anuluje operacje operacji usługi po stronie serwera i wywołania zwrotne modelu usługi. Takie anulowanie może być z jednego z dwóch powodów:
- Host usługi zatrzymał operacje z powodu wywołania funkcji WsAbortServiceHost.
- Kanał bazowy spowodował błąd.
Aby otrzymać powiadomienie o anulowaniu, operacja usługi lub wywołanie zwrotne modelu usługi muszą zarejestrować wywołanie zwrotne WS_OPERATION_CANCEL_CALLBACK, wywołując funkcję WsRegisterOperationForCancel.
Opcjonalnie, w ramach rejestracji w celu powiadomienia o anulowaniu, operacja usługi lub wywołanie zwrotne modelu usługi mogą również rejestrować dane stanu specyficzne dla aplikacji i WS_OPERATION_FREE_STATE_CALLBACK wywołania zwrotnego.
Dane stanu są udostępniane WS_OPERATION_CANCEL_CALLBACK wywołania zwrotnego. Po zakończeniu wywołania wywołania wywołania zwrotnego WS_OPERATION_FREE_STATE_CALLBACK jest wywoływana w celu udzielenia aplikacji możliwości zwolnienia danych stanu.
Aby zapoznać się z przykładem kodu, zobacz BlockingServiceExample.
Wywołanie zwrotne anulowania jest wywoływane tylko raz w okresie istnienia operacji usługi po stronie serwera lub funkcji wywołania zwrotnego.
Anulowanie wywołań jest dostępne dla wszystkich wywołań zwrotnych hosta usługi, które przyjmują WS_OPERATION_CONTEXT jako parametr.
Następujące elementy interfejsu API odnoszą się do anulowania wywołań.
Wywołania zwrotnego | Opis |
---|---|
WS_OPERATION_CANCEL_CALLBACK | Wywołana przez model usługi w celu powiadomienia o anulowaniu operacji asynchronicznej usługi w wyniku przerwanego zamknięcia hosta usługi. |
WS_OPERATION_FREE_STATE_CALLBACK | Wywoływany przez model usługi, aby umożliwić aplikacji czyszczenie danych stanu zarejestrowanych za pomocą wywołania zwrotnego anulowania. |
Funkcja | Opis |
---|---|
WsRegisterOperationForCancel | Umożliwia operacji usługi lub wywołania zwrotnego modelu usługi w celu zarejestrowania się w celu powiadomienia o anulowaniu. |