當前MFCMAPI使用單個線程來序列化所有MAPI調用。 Mapi提供程序初始化並將文件夾名稱等存儲爲成員變量,然後讀取郵箱。如何使用IMoniker和IStream接口異步讀取交換服務器
這可能會導致交換消息和附件的處理速度變慢。例如,查詢附件文件並等待它返回時代價高昂。所以最好能發送請求來讀取消息,同時可以做另一個進程(初始化另一個消息)。
那麼,是否有可能通過IMonikers和IBindStatusCallback :: OnDataAvailable初始化下一條消息來查詢和讀取消息。
或者還有其他方法可以做到嗎?
我試圖使用IMoniker和IStream從異步交換服務器讀取數據,我試圖使用BindToStorage進行異步綁定並從OnDataAvailable讀取日期。綁定代碼如下所示。
hRes = CoInitialize(NULL);
CComPtr<IBindCtx> pbc;
CComPtr<IMoniker> pmk;
CComPtr <IStream> lpStream1;
ULONG chEaten = 0;
hRes = CreateBindCtx(0, &pbc);
OLECHAR string[] =
L"Session:3!clsid:10000013-0000-0000-0000-000000000001";
if (FAILED(hRes = MkParseDisplayName(pbc, string, &chEaten, &pmk)))
{
return 0;
}
hRes = pmk->BindToStorage(pbc, NULL, IID_IStream,reinterpret_cast<void **>(&lpStream1));
但是,當調用BindToStorage時,它返回Class not Registered。 有誰知道哪部分是錯的?
是否有可能通過此方法異步地從交換服務器讀取數據?
感謝
[code snippet](https://msdn.microsoft.com/en-us/library/aa383539)的會話三是硬編碼的,但您可能有其他的。 –