0

我为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());
  }

问题是我手机改了约会,然后通过exchange服务器同步到outlook

产生问题的步骤:

  1. 单击按钮,获取 LastModificationTime 为“time1”

  2. 在我的手机中将开始日期更改为“start1”,通过 Exchange 服务器同步到 Outlook

  3. 单击按钮,获取 LastModificationTime,仍然是“time1”

  4. 在 Outlook 中将开始日期更改为“start2”,但约会仍处于“start1”日期。

  5. 重启展望

  6. 单击按钮,获取新的 LastModificationTime 作为“time2”,约会在“start1”日期,“start2”消失了。

没有问题的步骤

  1. 单击按钮,获取 LastModificationTime 为“time1”

1.1。重启展望

  1. 在我的手机中将开始日期更改为“start1”,通过 Exchange 服务器同步到 Outlook

  2. 点击按钮,获取 LastModificationTime, "time2"

如果约会是通过交换服务器更改的,那么 List Appts 似乎永远不会刷新到最新值。

这个问题有什么解决办法吗?或其他原因使其发生?

4

2 回答 2

1

没有看到你的其他代码,但你需要记住释放约会对象 Marshal.ReleaseComObject。您的客户端前景是否也处于缓存模式?

马库斯

于 2010-04-19T08:44:58.460 回答
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 对我有用。

于 2017-07-27T08:41:13.340 回答