내가 IMAP4 메시지를 표시하려면이 코드를 사용하고 있습니다 : 사용자가 원격 메시지를 다운로드하려고 할 때 경우에,원격 이메일 메시지를 표시하는 방법은 무엇입니까?
void DisplayMessageL(const TMsvId &aId)
{
// 1. construct the client MTM
TMsvEntry indexEntry;
TMsvId serviceId;
User::LeaveIfError(iMsvSession->GetEntry(aId, serviceId, indexEntry));
CBaseMtm* mtm = iClientReg->NewMtmL(indexEntry.iMtm);
CleanupStack::PushL(mtm);
// 2. construct the user interface MTM
CBaseMtmUi* uiMtm = iUiReg->NewMtmUiL(*mtm);
CleanupStack::PushL(uiMtm);
// 3. display the message
uiMtm->BaseMtm().SwitchCurrentEntryL(indexEntry.Id());
CMsvOperationWait* waiter=CMsvOperationWait::NewLC();
waiter->Start(); //we use synchronous waiter
CMsvOperation* op = uiMtm->OpenL(waiter->iStatus);
CleanupStack::PushL(op);
CActiveScheduler::Start();
// 4. cleanup for example even members
CleanupStack::PopAndDestroy(4); // op,waiter, mtm, uimtm
}
하지만 (즉, 이전에 메일 서버에서 검색되지 이메일 중 하나) 한 다음 취소 요청은 내 코드가 차단 된 채로 남아 있으며 작업이 취소되었다는 정보를받지 못합니다.
내 질문은 :
- 무엇 위의 해결 방법은, 그래서 응용 프로그램이 붙어하지?
- 누구나 공황 상태에 빠뜨리거나 응용 프로그램을 중단시키지 않는 원격 메시지 열기를위한 비동기 호출에 대한 작업 예제를 제공 할 수 있습니까?
POP3, SMTP 및 로컬 IMAP4 메시지의 비동기 호출은 완벽하게 작동하지만 원격 IMAP4 메시지는이 문제를 생성합니다.
나는이 예제를 S60 제 5 판에 테스트 중이다.
감사합니다.
괜찮습니다.이 모든 것이 잘못되었습니다. DisplayMessageL에 도달하면 이미 활성 스케줄러에서 실행 중이어야합니다. 전체 애플리케이션 구조가 잘못되었다고 생각합니다. –
이것은 내 응용 프로그램이 아닙니다. 나는 단지 원격 IMAP4 메시지를 열 수있는 예제를 찾고있다. 내 질문에 말했듯이, 나는 CMsvOperation과 비동기 호출을 사용하는 데 아무런 문제가 없었지만, IMAP4 메시지에 대해서는 전혀 작동하지 않습니다. 이제는 동 기적으로 작동하는지 확인하기 위해 예제를 재사용하고 있습니다. 비동기식 예제를보기가 정말 기쁩니다. –