سؤال

لقد خلق VSTO في C# من المفترض أن يتم ربط Outlook 2007 NewMailEx الحدث.إلا أنه لا إطلاق في بعض الأحيان عندما أقوم دليل إرسال/تلقي ، أو عندما يكون هناك فقط 1 غير مقروء البريد في علبة الوارد.يبدو تقريبا كما لو انها تطلق على البريد الوارد قبل الرسالة يصل فعلا.

هل هناك طريقة أفضل من رصد رسائل جديدة في كل مرة إلى جانب ItemAdd أو NewMailEX باستخدام VSTO?

هل كانت مفيدة؟

المحلول

والسبب هو:"GC جمع .صافي كائن whichc wrapps كائن COM من Outlook )".الحل هو الاستمرار إشارة إلى هذا .صافي الكائن.الأكثر سهولة طريقة هي:

// this is helper collection.
// there are all wrapper objects
// , which should not be collected by GC
private List<object> holdedObjects = new List<object>();

// hooks necesary events
void HookEvents() {
    // finds button in commandbars
    CommandBarButton btnSomeButton = FindCommandBarButton( "MyButton ");
    // hooks "Click" event
    btnSomeButton.Click += btnSomeButton_Click;
    // add "btnSomeButton" object to collection and
    // and prevent themfrom collecting by GC
    holdedObjects.Add( btnSomeButton );
}

هل يمكن أن يكون أيضا حقل خاص من أجل هذه ( وغيرها ) ملموسة على زر ( أو أشياء أخرى ) ، إذا كنت تريد.ولكن هذا هو الحل الأكثر شيوعا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top