Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Клиент может отменить асинхронный вызов, который выполняется, если объект вызова реализует интерфейс ICancelMethodCalls. Для объектов, использующих стандартное маршалирование, ICancelMethodCalls всегда доступен для маршалируемых вызовов. Для объектов, использующих пользовательский маршалинг или вызовы объектов сервера в одной квартире, эта функция доступна только в том случае, если объект вызова реализует ICancelMethodCalls.
Клиент может отменить вызов в любое время, когда метод Begin_ вызывается до тех пор, пока метод Finish_ не возвращается. Если клиент отменяет вызов перед вызовом метода Finish_, он должен вызвать метод Finish_, чтобы очистить состояние объекта вызова. Пока клиент не сделает это, все вызовы любого метода Begin_ в объекте вызова будут возвращать RPC_E_CALL_PENDING.
Отмена асинхронного вызова
Запросите объект вызова для ICancelMethodCalls.
Вызовите ICancelMethodCalls::Cancel, а затем вызовите Release, чтобы освободить указатель, полученный вызовом QueryInterface на шаге 1.
Если клиент еще не вызвал метод Finish_, вызовите его сейчас.
Нет никаких гарантий, что сервер фактически остановил выполнение вызова. Если дальнейшая работа клиента зависит от состояния сервера, которое могло измениться или остаться прежним, клиент должен определить это состояние перед продолжением работы.
Связанные разделы