Это вопрос о поддержании потока C # во время ожидания событий.
Я пишу приложение на C #, которое должно запустить экземпляр outlook (или повторно использовать любой существующий экземпляр, если есть один активный), создать mailitem и показать его, а затем ждать события close или send для mailitem ,
Приложение не будет надстройкой, работающей внутри outlook, но будет выполнено извне outlook для создания экземпляра outlook и mailitem.
Поскольку мое приложение не запускается из графического интерфейса Outlook, а скорее запускает графический интерфейс Outlook, мне каким-то образом необходимо поддерживать процесс в рабочем состоянии до тех пор, пока не будут получены события (отправка или закрытие). Если мое приложение вернется и умрет после отображения сообщения Outlook, мои обработчики событий также будут мертвыми.
Вопрос: Как мне поддерживать приложение в ожидании событий?
Поскольку мой поток является тем, который создает почтовый элемент и показывает его в окне Outlook, отвечает ли мой поток за то, чтобы не блокировать доставку возможных сообщений в окно Outlook?
Я думал о том, чтобы подобный метод поддерживал процесс во время ожидания
while(!MailClosed){
lock(mailLock){
Monitor.Wait(mailLock);
}
}
и затем позволяют обработчикам событий для отправки и закрытия вызывать другой метод, чтобы разбудить официанта, когда они закончат обработку события
private void SignalClose(){
lock(mailLock){
MailClosed = true;
Monitor.Pulse(mailLock);
}
}
Будет ли блокирование возможных сообщений от доставки в окно Outlook, содержащее мой почтовый элемент? У кого-нибудь есть лучшее решение для решения этой ситуации?