我已使用該代碼來顯示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 5th版的這些例子。
謝謝大家提前。
好的,這感覺都錯了。到達DisplayMessageL時,您應該已經在活動調度程序中運行了。我認爲你的整個應用程序結構出錯了。 – 2010-02-05 11:50:43
這不是我的應用程序。我只是想找到一個可以打開遠程IMAP4消息的例子。正如我在我的問題中所說的那樣,我在使用異步調用ws/CMsvOperation時沒有問題,但對IMAP4消息來說這完全不起作用。現在,我正在重複使用一些示例來查看它是否可以同步工作。雖然我會很高興看到異步的例子。 – 2010-02-05 16:49:12