2016-04-09 23 views
0

Randevu dizisi konusunu kaydetmeye çalışıyorum. Bu beklendiği gibi çalışır ancak kaydetmeden sonra, move/edit takvim öğesini gerçekleştirdiğimde, bu hatayı alıyorum.Outlook VSTO - Randevuyu Kaydetme Ana Sayfası

enter image description here

Kod hata yeniden.

public void OnMyButtonClickContext(Office.IRibbonControl control) 
    { 

     var sel = control.Context as Microsoft.Office.Interop.Outlook.Selection; 
     var i = sel[1] as Microsoft.Office.Interop.Outlook.AppointmentItem; 

     i.Parent.Subject = i.Parent.Subject + " [CONFIRMED]"; 
     i.Parent.Save(); 

    } 

Ben Marhsal.ReleaseComObject(i) kullanarak, ben null ayarını denedim. Hiçbiri yardım etmiyor gibi görünüyor.

cevap

0

Koddaki herhangi bir COM nesnesi deyimi yayımlamıyorum. Hangi nesneleri serbest bırakmaya çalıştın?

Neden her zaman AppointmentItem sınıfının Veli özelliğini kullanıyorsunuz?

Ebeveyn özelliğini her aradığınızda referans sayacını artırın. Ve sonra bu nesneleri kodda serbest bırakmanız gerekir. Kullanmayı bitirdiğinizde bir Outlook nesnesini serbest bırakmak için System.Runtime.InteropServices.Marshal.ReleaseComObject'u kullanın.

. Sonra nesneyi başvuruyu serbest bırakmak için Visual Basic'te (C# içinde null) hiçbir şey için bir değişken ayarlayın. Systematically Releasing Objects makalesinde bununla ilgili daha fazla bilgi edinin.

Eğer randevu öğeleri, sen önceden herhangi başvuruları serbest eriştiğiniz veya öğeyi değiştirmek önce yinelenen randevu öğesine yeni referanslar elde etmelidir tekrarlanan çalışmak ve: İşte

MSDN bunun için devletler ne Bitirdiğiniz ve değişiklikleri kaydettikten sonra bu referansları serbest bırakın. Bu uygulama, yinelenen AppointmentItem nesnesine ve herhangi bir Özel Durum veya RecurrencePattern nesnesine uygulanır. Visual Basic for Applications (VBA) veya Visual Basic'te bir başvuru yayımlamak için varolan nesneyi Nothing olarak ayarlayın. C#, açıkça bu nesne için belleği serbest bırakın.

Referansınızı bıraktıktan ve yeni bir başvuru elde etmeye çalıştıktan sonra bile, başka bir eklenti veya Outlook tarafından tutulan etkin bir başvuru varsa, yukarıdaki nesnelerden birine, yeni referansınızın yine de işaret edeceğini unutmayın. nesnenin güncel olmayan bir kopyasına. Bu nedenle, tekrar eden randevu ile bittiğinde referanslarınızı serbest bırakmanız önemlidir.

Koddaki tüm temel COM nesnelerini serbest bırakmadığınız anlaşılıyor.

İlgili konular