Aracılığıyla paylaş


Eski bir MAPIOBJECT üzerinde IMAPIProp::GetProps çağrısı yaptığınızda Outlook kilitleniyor

Özgün KB numarası: 4131515

Belirtiler

Aşağıdaki senaryoyu inceleyin:

  • Microsoft Outlook'u kullanarak bir e-posta iletisi oluşturursunuz.
  • Yeni iletiye mevcut bir e-posta iletisi eklersiniz.
  • Ekli iletiyi görüntülemek için açarsınız.
  • Yeni açtığınız e-posta ekine karşılık gelen geçerli Outlook.MailItem'e başvuru almak için NewInspector olayını kullanırsınız.
  • MailItem nesnesinden, C++'da MAPIOBJECT özelliğini okuyarak temel MAPI nesnesine başvuru alırsınız.
  • İletiyi kaydedersiniz veya Outlook bir Otomatik Kaydetme işlemi başlatır.
  • GetProps yöntemini, NewInspector olayı aracılığıyla aldığınız başvurudan MAPIOBJECTbir IMAPIProp başvurusunda başlatırsınız.

Bu senaryoda, Outlook kilitleniyor.

Neden

özelliğinden MAPIOBJECT aldığınız MAPI nesnesi eski haline geldi ve artık kullanılamıyor. İlgili Outlook öğesi değiştiyse özelliği yeniden kullanmamalısınız.

Çözüm

Bir Outlook veya Outlook Nesne Modeli öğesiyle eşleyen MAPI nesnesinde her işlem çalıştırmak zorunda olduğunuzda, temel alınan MAPI nesnesine yeni bir başvuru almanız gerekir. Ardından, artık geçerli olmayabilecek eski bir başvuru yerine bu yeni başvuru üzerinde MAPI işlemlerini çalıştırın. Eski başvurunun kullanılması beklenmeyen davranışlara neden olabilir ve Outlook istemcisini kilitler.

Daha fazla bilgi

Outlook Nesne Modeli aracılığıyla elde ettiğiniz başvuruları MAPIOBJECT gerekliden daha uzun süre tutmamanızı öneririz. Bunun nedeni, temel alınan nesnenin sıklıkla değiştirilebilir olmasıdır. Eski bir temel nesne kullanmak beklenmeyen hatalara neden olabilir. Bu, yalnızca "Belirtiler" bölümünde bahsedilen senaryolar için değil, Outlook Nesne Modeli aracılığıyla başvuru MAPIOBJECT almanız gerekebilecek tüm senaryolar için geçerlidir.