Outlook VSTO加载项用于会议

Outlook VSTO加载项用于会议,outlook,vsto,visual-studio-addins,Outlook,Vsto,Visual Studio Addins,我们已为Outlook会议创建了VSTO加载项 作为这项工作的一部分,我们在FormRegionShowing事件上捕获消息的SendEvent: _apptEvents.Send += new Microsoft.Office.Interop.Outlook.ItemEvents_SendEventHandler(_apptEvents_Send); 方法\u apptEvents\u Send然后测试几个属性,并在适当的地方退出 private void _apptEvents_Send(

我们已为Outlook会议创建了VSTO加载项

作为这项工作的一部分,我们在
FormRegionShowing
事件上捕获消息的
SendEvent

_apptEvents.Send += new Microsoft.Office.Interop.Outlook.ItemEvents_SendEventHandler(_apptEvents_Send);
方法
\u apptEvents\u Send
然后测试几个属性,并在适当的地方退出

private void _apptEvents_Send(ref bool Cancel)
{
    if (!_Qualified)
    {
        MessageBox.Show("Meeting has not been qualified", "Not Qualified Meeting", MessageBoxButtons.OK, MessageBoxIcon.Information);
        chkQualified.Focus();
        Cancel = true;
    }
}
我们面临的问题是,一些用户的消息会被发送两次。发送会议时一次,用户重新打开outlook时第二次

我一直在寻找内存泄漏,认为有些东西可能没有得到正确的处理,并在所有finally调用中添加了明确的对象处理,以尝试确保资源得到管理,但仍然在整个组织中不一致地获得功能。i、 e.我在开发过程中从未遇到过问题,也没有在测试期间遇到其他开发人员。所有用户都是Outlook框架(3.5 SP1)和修补程序的最新版本

有人知道是什么导致了这一切吗


任何人的任何想法都将不胜感激

我不是专业人士,但由于人们发送邮件的设置,我过去在进行outlook自动化时遇到过麻烦

例如,我的邮件仅在强制发送/接收周期时发送。尽管大多数人都有outlook要立即发送,但我记得当有人第一次要求提供真正简单的自动化脚本时,我感到有些头疼


看看这是否是所有开发人员的共同点,用户的设置是否不同

我不是专业人士,但由于人们发送邮件的设置,我过去在进行outlook自动化时遇到过麻烦

例如,我的邮件仅在强制发送/接收周期时发送。尽管大多数人都有outlook要立即发送,但我记得当有人第一次要求提供真正简单的自动化脚本时,我感到有些头疼


看看这是否是所有开发人员的共同点,用户的设置是否不同

为什么要使用
Microsoft.Office.Interop.Outlook.ApplicationEvents_10.Send Event
而不是反复添加给定的处理程序

在vsto加载项的启动方法中,只需添加:

((MSOutlook.ApplicationEvents_10_Event)_OutlookApp).ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_10_ItemSendEventHandler(Utils_ItemSend);

void Utils_ItemSend(object Item, ref bool Cancel)
{
    //Do your operation here.
}

为什么要使用
Microsoft.Office.Interop.Outlook.ApplicationEvents_10.Send Event
而不是反复添加给定的处理程序

在vsto加载项的启动方法中,只需添加:

((MSOutlook.ApplicationEvents_10_Event)_OutlookApp).ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_10_ItemSendEventHandler(Utils_ItemSend);

void Utils_ItemSend(object Item, ref bool Cancel)
{
    //Do your operation here.
}

你犯了一个小错误。按如下所示更改代码

 private void _apptEvents_Send(ref bool Cancel)
 {
    if (!_Qualified)
    {
    MessageBox.Show("Meeting has not been qualified", "Not Qualified Meeting", 
    MessageBoxButtons.OK, MessageBoxIcon.Information);
    chkQualified.Focus();
    Cancel = true;
    return; // need to add this one line
  }
}

你犯了一个小错误。按如下所示更改代码

 private void _apptEvents_Send(ref bool Cancel)
 {
    if (!_Qualified)
    {
    MessageBox.Show("Meeting has not been qualified", "Not Qualified Meeting", 
    MessageBoxButtons.OK, MessageBoxIcon.Information);
    chkQualified.Focus();
    Cancel = true;
    return; // need to add this one line
  }
}