我为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”日期。
重新启动展望
点击按钮,将新LastModificationTime设为“time2”,约会处于“start1”日期,“start2”消失。
没有问题的步骤
1.1。重启前景
在我的手机中将开始日期更改为“start1”,通过交换服务器同步到Outlook
点击按钮,获取LastModificationTime,“time2”
看起来像 列出Appts 如果通过Exchange服务器更改约会,则永远不会刷新到最新值。
这个问题有什么解决方案吗?或其他原因使它成为现实?
答案 0 :(得分:1)
没有看到其他代码,但您需要记住释放约会对象 Marshal.ReleaseComObject的。 您的客户端Outlook是否也处于缓存模式?
马库斯
答案 1 :(得分:0)
我有同样的问题,这是我的解决方案:
使用:
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对我有效。