我正在创建一个Outlook外接程序,当会议的与会者更改时需要触发该外接程序。我遇到的问题是,约会项的PropertyChange事件触发的方式太多,因此我无法获得确切的参与者数量。
这是我正在使用的一些代码:
private Outlook.AppointmentItem appointmentItem;
private void Inspectors_NewInspector(Outlook.Inspector inspector)
{
var item = inspector.CurrentItem as Outlook.AppointmentItem;
if (item != null)
{
appointmentItem = item;
temp = inspector;
visible = false;
appointmentItem.PropertyChange += AppOnPropertyChange;
}
}
private void AppOnPropertyChange(string name)
{
if (name.Equals("RequiredAttendees"))
{
var test = appointmentItem.Recipients.Count;
}
}
事件被触发太多次,因此“测试”将获得介于1(发送方始终是与会者)和与会者数量之间的值。另外,如果您说3名参加者,而您删除了1名,则“测试”为4-3-2-1。
有没有办法找出AppointmentItem中与会者的确切人数?
任何帮助将非常感激。
ItemChange("RequiredAttendees")
将为必需,可选或资源参与者中的任何更改而触发,您无需为此做任何事情。
我很幸运使用计时器-触发ItemChange事件时,启用计时器(您可以将其间隔设置为100毫秒)。当计时器事件触发时,请禁用计时器(这样它就不会再次触发)。并处理收件人集合。到那时,所有更改都将被处理,您将只处理与会者一次。
由于使用的是.Net,请使用Forms命名空间中的Timer类(它在主线程上工作)而不是System命名空间(它使用背景线程,这是在COM加载项中使用Outlook对象时的一种不好的做法) 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句