2012-10-23 3 views
0

나는 간단한 질문 하나를 가지고 있습니다. Symbian의 Sockets API에 관한 것입니다.Symbian : 긴 비동기 소켓 작업을 올바르게 취소하는 방법

현재 긴 비동기 작업을 어떻게 닫아야합니까? 예를 들어, GPRS에 대해 CSecureSocket::StartClientHandshake과 같은 작업을 수행하면 작업이 상당히 오래 걸립니다. 앱을 닫으려면 동기화 작업 인 Cancel()으로 전화해야합니다. CSecureSocket::StartClientHandshake이 완료되는 동안 약 3 분을 기다리고 있습니다.

내가 원하는 것은 아닙니다. 대신 CSecureSocket::Close()으로 전화합니다. 그것은 내 핸드 셰이크 프로세스를 깨고 소켓을 닫았습니다. 하지만 다음 번에는 에 Canceled이라는 콜백이 생깁니다. 내 앱을 닫지 않으면 정상입니다. 그러나 내 MyClass을 삭제하면 실수입니다.

MyClass을 삭제하려면 ~MyClassCancel()으로 전화해야하지만 약 3 분 정도 기다려야합니다.

그리고 그것은 내 질문입니다. 긴 비동기 작업을 어떻게 닫아야합니까?

답변

0

AFAIK calling Close는 모든 실행중인 작업에 대해 Cancel을 내부적으로 호출해야합니다. 그 이유는 당신이 취소 된 통지를받는 이유입니다. 따라서 MyClass를 삭제할 때 Cancel이 아니라 Close를 호출하십시오.