1
我試圖創建一個簡單的Outlook 2010加載項來響應新的附件事件。 下面的代碼僅在取消註釋MessageBox.Show行時有效。但隨着它被刪除它似乎不添加事件處理程序。我錯過了什麼程序流程,這意味着模態消息框會影響事件處理程序的位置?事件處理程序未被添加到新的郵件項目
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.Inspectors.NewInspector += Inspectors_NewInspector;
}
void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem != null)
{
if (mailItem.EntryID == null)
{
mailItem.BeforeAttachmentAdd += mailItem_BeforeAttachmentAdd;
//System.Windows.Forms.MessageBox.Show("Twice");
}
}
}
void mailItem_BeforeAttachmentAdd(Outlook.Attachment Attachment, ref bool Cancel)
{
Cancel = true;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
你怎麼知道處理程序沒有附加?您在註釋代碼之前和之後是否在'mailItem_BeforeAttachmentAdd()'內部放置了一個斷點,以查看事件是否觸發? –
只要在事件處理程序中添加斷點,一切都按預期工作。如果在行上添加一個斷點,則取消= true;斷點永遠不會到達。 如果將斷點添加到處理程序行並且取消= true;然後到達兩個斷點。 – elaverick
是否有可能存在競爭條件? – Aelphaeis