[英]VSTO outlook data issue through exchange sync
我为Outlook编写了一个插件,单击按钮时它将弹出约会的LastModificationTime。
像这样的按钮事件处理程序
Outlook.ApplicationClass outlook = new Outlook.ApplicationClass();
Outlook.NameSpace ns = outlook.GetNamespace("MAPI");
Outlook.MAPIFolder folder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
Outlook.Items FolderItems = folder.Items;
DateTime MyDate = DateTime.Now;
List<Outlook.AppointmentItem> Appts = (
from Outlook.AppointmentItem i in folder.Items
where i.Start.Month == MyDate.Month && i.Start.Year == MyDate.Year
select i).ToList();
foreach (Outlook.AppointmentItem Appt in Appts)
{
System.Windows.Forms.MessageBox.Show(Appt.LastModificationTime.ToString());
}
我在手机中更改约会后发生问题,然后通过交换服务器将其同步到Outlook
导致问题的步骤:
单击按钮,将LastModificationTime获取为“ time1”
在我的手机中将开始日期更改为“ start1”,并通过交换服务器同步到Outlook
单击按钮,获取LastModificationTime,仍为“ time1”
在Outlook中将开始日期更改为“ start2”,但约会仍在“ start1”日期中。
重新启动Outlook
单击按钮,获取新的LastModificationTime作为“ time2”,并且约会在“ start1”日期中,“ start2”消失了。
没有问题的步骤
1.1。 重新启动Outlook
在我的手机中将开始日期更改为“ start1”,并通过交换服务器同步到Outlook
单击按钮,获取LastModificationTime,“ time2”
如果约会通过Exchange服务器更改,则看来List Appts从未被刷新为最新值。
这个问题有解决方案吗? 或其他原因使之成为现实?
没有看到其他代码,但是您需要记住释放约会对象Marshal.ReleaseComObject。 您的客户前景也处于缓存模式吗?
马库斯
我遇到了同样的问题,这是我的解决方案:
采用:
Outlook.Folder calFolder = outlookApplication.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder;
代替:
Outlook.MAPIFolder folder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
区别在于Outlook.MAPIFolder和Outlook.Folder,我不知道为什么,但是Outlook.Folder对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.