Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook 为什么任命项目';s发送事件将被多次调用?_Outlook_Vsto - Fatal编程技术网

Outlook 为什么任命项目';s发送事件将被多次调用?

Outlook 为什么任命项目';s发送事件将被多次调用?,outlook,vsto,Outlook,Vsto,我向每个AppointItem的发送事件添加一个事件处理程序。这个事件处理程序只是做一些日志记录的事情。我通过Outlook 2003创建会议,然后更新会议两次。最后我查了一下日志 this.Application.Inspectors.NewInspector+=new Microsoft.Office.Interop.Outlook.InspectorsEvents\u NewInspector或venthandler(\u Inspectors\u NewInspector); 私有voi

我向每个
AppointItem
的发送事件添加一个事件处理程序。这个事件处理程序只是做一些日志记录的事情。我通过Outlook 2003创建会议,然后更新会议两次。最后我查了一下日志

this.Application.Inspectors.NewInspector+=new Microsoft.Office.Interop.Outlook.InspectorsEvents\u NewInspector或venthandler(\u Inspectors\u NewInspector);
私有void\u Inspector\u NewInspector(Microsoft.Office.Interop.Outlook.Inspector)
{
if(inspector.CurrentItem为Outlook.AppointmentItem)
{
_appointmentEvent=inspector.CurrentItem作为Outlook.ItemEvents\u 10\u事件;
_appointmentEvent.Send+=新的Microsoft.Office.Interop.Outlook.ItemEvents\u 10\u SendEventHandler(\u appointmentEvent\u Send);
}
}
私人作废(任命事件)发送(参考bool Cancel)
{
Log.WriteLog(“InspectorWrapper:_appointmentEvent_Send Enter”);
Log.WriteLog(“InspectorWrapper:_appointmentEvent_Send Exit”);
}
我检查日志。我发现发送事件处理程序将被多次调用

2012-05-16 10:07:21:066:检查员包装:任命事件发送输入
2012-05-16 10:07:21:067:检查员包装:任命事件发送退出

2012-05-16 10:07:27:281:检查员包装:任命事件发送输入
2012-05-16 10:07:27:283:检查员包装:任命事件发送退出
2012-05-16 10:07:27:283:检查员包装:任命事件发送输入
2012-05-16 10:07:27:284:检查员包装:任命事件发送退出

2012-05-16 10:07:32:607:检查员包装:任命事件发送输入
2012-05-16 10:07:32:608:检查员包装:任命事件发送退出
2012-05-16 10:07:32:609:检查员包装:任命事件发送输入
2012-05-16 10:07:32:609:检查员包装:任命事件发送退出
2012-05-16 10:07:32:610:检查员包装:任命事件发送输入
2012-05-16 10:07:32:610:检查员包装:任命事件发送退出


为什么?

您应该将日志记录添加到
NewInspector
事件中,以查看锁定
AppointmentItem.Send
事件的次数。我的假设是
NewInspector
是您的问题。最佳做法是使用自定义的
InspectorWrapper
作为容器来管理活动检查器的列表,以避免多个事件锁定

请参阅中的
findoutlookinstit
,以供参考

内部静态列表m_窗口;
内部静态了望检查器FindOutlookInspector(对象窗口)
{
foreach(m_窗口中的了望检查员)
如果(inspector.Window==Window)
退货检查员;
返回null;
} 

谢谢您的通知。NewInspector只是表示此inspector窗口是新的,并不表示AppointmentItem是新的,可能此AppointmentItem已加载多次。