비동기 호출 취소
호출 개체가 ICancelMethodCalls 인터페이스를 구현하는 경우 클라이언트는 진행 중인 비동기 호출을 취소할 수 있습니다. 표준 마샬링을 사용하는 개체의 경우 ICancelMethodCalls 는 마샬링된 호출에 항상 사용할 수 있습니다. 사용자 지정 마샬링을 사용하거나 동일한 아파트 내의 서버 개체를 호출하는 개체의 경우 호출 개체가 ICancelMethodCalls를 구현하는 경우에만 이 기능을 사용할 수 있습니다.
클라이언트는 Begin_ 메서드가 호출될 때부터 Finish_ 메서드가 반환될 때까지 언제든지 호출을 취소할 수 있습니다. 클라이언트가 Finish_ 메서드를 호출하기 전에 호출을 취소하는 경우 호출 개체의 상태를 클린 위해 Finish_ 메서드를 호출해야 합니다. 클라이언트가 이 작업을 수행할 때까지 호출 개체의 Begin_ 메서드에 대한 모든 호출은 RPC_E_CALL_PENDING 반환합니다.
비동기 호출을 취소하려면
ICancelMethodCalls에 대한 호출 개체를 쿼리합니다.
ICancelMethodCalls::Cancel을 호출한 다음 Release를 호출하여 1단계에서 QueryInterface 호출로 얻은 포인터를 해제합니다.
클라이언트가 Finish_ 메서드를 아직 호출하지 않은 경우 지금 호출합니다.
서버가 실제로 호출 실행을 중지했다는 보장은 없습니다. 클라이언트의 추가 작업이 호출이 변경되었을 수도 있고 변경되지 않았을 수도 있는 일부 서버 상태에 따라 달라지는 경우 클라이언트는 계속하기 전에 해당 상태를 결정해야 합니다.
관련 항목