Я создаю объект Почты Outlook и наблюдаю за событием Отправить.Все выглядит хорошо, но когда срабатывает событие Send, событие вызывается в фоновом потоке моего приложения.Причина этого заключается в том, что это событие создает запись электронного письма, отправленного через мое приложение, которое добавляется в коллекцию объектов.Поэтому коллекция вызывает событие List Changed в фоновом потоке, вызывая многопотоковый доступ к элементу управления, отображающему коллекцию.
Вот мое подключение события:
((Outlook.ItemEvents_10_Event)item).Send += new Microsoft.Office.Interop.Outlook.ItemEvents_10_SendEventHandler(ItemSendWatcher_Send);
* 1005Событие подключается к базовому классу, который содержит ссылку на отправляемое сообщение и делегат для вызова при возникновении события отправки.Это позволяет мне передать экземпляр объекта электронной почты делегату.
Это мой обработчик:
void ItemSendWatcher_Send(ref bool Cancel)
{
if (itemSendDelegate != null)
{
this.itemSendDelegate(this.item, ref Cancel); //The delegate with the mail item
}
Marshal.ReleaseComObject(item);
itemSendDelegate = null;
}
Это правильное поведение для этого события или я что-то не так делаю, когдастроит объект?Спасибо за любую помощь.
Редактировать: Просто чтобы уточнить, я не обрабатываю событие на уровне пользовательского интерфейса, а в бизнес-объекте.Делегат, вызванный из обработчика события отправки, вызывает добавление нового объекта в список внутри страны, что вызывает событие ListChanged списка, в результате чего вызывается обработчик в элементе управления, отображающем этот список.Я надеюсь, что это проясняет то, чего я пытаюсь достичь.