這是一個關於在等待事件時保持C#線程活着的問題。我正在編寫一個C#應用程序,該應用程序將啓動一個Outlook實例(或者如果有一個實例存在,則重新使用任何現有的實例),創建一個mailitem並顯示它,然後等待關閉事件或發送事件的MailItem。如何在不阻止Windows消息的情況下等待事件?
該應用程序不是在Outlook內運行的加載項,而是從Outlook外部執行以創建outlook實例和mailitem。
由於我的應用程序不是從Outlook的GUI中運行的,而是啓動了Outlook的GUI,因此我需要在收到事件(發送或關閉)之前使我的進程保持活動狀態。如果我的應用程序在顯示Outlook消息後返回並死亡,我的事件處理程序也會死機。
問題:我該如何讓應用程序在等待事件時保持活動?
由於我的線程是創建mailitem並在Outlook窗口中顯示它的線程,因此我的線程負責不阻止將可能的郵件傳遞到Outlook窗口?
我的想法是有一種方法看起來像這樣的飼養過程活着,等待
while(!MailClosed){
lock(mailLock){
Monitor.Wait(mailLock);
}
}
,然後讓對發送和千鈞一髮的另一種方法來喚醒服務員的事件處理程序,他們已完成處理時事件
private void SignalClose(){
lock(mailLock){
MailClosed = true;
Monitor.Pulse(mailLock);
}
}
這樣做會阻止可能的消息被傳遞到Outlook窗口持有我的mailitem?有沒有人有更好的解決方案來處理這種情況?
哈哈,哇,這是舊派! – Pierreten 2011-01-28 08:09:53