Короткая версия: Мне нужно отобразить текущий выбранный элемент почты на экране.Тогда позже мне нужно закрыть окно.Проблема заключается в том, что закрытие окна mailItem завершает экземпляр приложения Outlook.
Detail: У меня есть функция, которая вызывает MailItem.Display (false), чтобы отобразить выбранный в настоящее время элемент почты на экране.,Затем отдельный инструмент выполняет некоторую автоматизацию «на стекле» (перемещает мышь по нажатию кнопки).Затем, когда это сделано, у меня есть функция, которая закрывает окно.Проблема в том, что когда я закрываю окно инспектора почтовых элементов, мой экземпляр Outlook закрывается все вместе.Мой класс, в котором был создан экземпляр outlook, остается таким, каким он должен быть, но теперь все будущие вызовы функций завершаются сбоем, поскольку объект приложения Outlook, который я глобально определил в своем классе, теперь равен нулю.
;
;
Вот первая функция для отображения mailItem:
public string DisplayMail(string ID){
try{
Outlook.MailItem mailItem = (Outlook.MailItem)(oNamespace.GetItemFromID(ID,activeFolder.StoreID));
mailItem.Display(false);
mailItem.GetInspector.Activate(); //just to bring the window to the front if it isn't
return("Success");
} catch (Exception e){
return(ErrPrefix + e.ToString());
}
}
Вот код, который закрывает mailItem:
public string CloseMail(string ID){
try{
Outlook.MailItem mailItem = (Outlook.MailItem)(oNamespace.GetItemFromID(ID,activeFolder.StoreID));
mailItem.Close(Outlook.OlInspectorClose.olDiscard);
return("Success");
} catch (Exception e){
return(ErrPrefix + e.ToString());
}
}
Вот некоторый связанный глобальный код:
oApp = new Outlook.Application();
oNamespace = oApp.GetNamespace("MAPI");
Я использую .Net Core 2.0, для работы на стекле это требуется.Я перестраиваю старый инструмент, который выполнял ту же работу, но был очень медленным и трудным для проверки ошибок.Я стараюсь держать как можно больше на экране, чтобы ускорить процесс, поэтому я не отображаю главное окно перспективы или элементы почты, если мне это абсолютно не нужно.Они бегут невидимыми на заднем плане.К сожалению, в этом случае я должен отобразить mailItem, чтобы другой инструмент мог выполнять работу со стеклом.Из того, что я могу сказать, если outlook обнаруживает последнее событие закрытия окна outlook, умирает экземпляр приложения.Что странно, потому что если окно никогда не отображается и я работаю в фоновом режиме, экземпляр будет продолжаться до тех пор, пока я не отпущу / убью его или класс, содержащий экземпляр, не будет деконструирован.
Спасибо за любую помощь.