VSTO выпуск данных о перспективах через биржевую синхронизацию - PullRequest
0 голосов
/ 19 апреля 2010

Я написал плагин для 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 через сервер обмена

шагов, которые создают проблему:

  1. нажмите кнопку, получите LastModificationTime как "time1"

  2. изменить дату начала на моем мобильном телефоне как «start1», синхронизировать с Outlook через сервер обмена

  3. нажмите кнопку, получите LastModificationTime, по-прежнему "time1"

  4. изменить дату начала на «start2» в Outlook, но встреча по-прежнему на дату «start1».

  5. Перезапуск Outlook

  6. нажмите кнопку, получите новый LastModificationTime в качестве «time2», и встреча назначена на дату «start1», «start2» больше нет.

шагов без проблем

  1. нажмите кнопку, получите LastModificationTime как "time1"

1,1. перезапустить outlook

  1. изменить дату начала на моем мобильном телефоне как «start1», синхронизировать с Outlook через сервер обмена

  2. нажмите кнопку, получите LastModificationTime, "time2"

Похоже, Список приложений никогда не обновляется до последнего значения, если назначение изменено через сервер обмена.

Есть ли решение этой проблемы? или другая причина, чтобы это произошло?

Ответы [ 2 ]

1 голос
/ 19 апреля 2010

Не вижу другого кода, но вы должны помнить, чтобы освободить объекты встречи Marshal.ReleaseComObject. Также ваш клиент в режиме кэширования?

Марк

0 голосов
/ 27 июля 2017

У меня была такая же проблема, и вот мое решение:

Использование:

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 работает.

...