У меня есть приложение, которое синхронизирует встречи между Outlook и моим приложением. Код синхронизации использует Redemption для обновления встреч в Outlook.
Когда встреча добавляется в Outlook, мой код улавливает событие добавления элемента, генерирует эквивалентную встречу в моем приложении и добавляет мой идентификатор встречи в качестве свойства пользователя в встрече Outlook, а затем сохраняет его.
Странная проблема, с которой я столкнулся, заключается в следующем:
- Один щелчок по дню в обзоре месяца
- Текстовое поле отображается в блоке дня, введите тему и нажмите Enter.
- Дважды щелкните новую встречу, чтобы сразу открыть ее
- Внесите некоторые изменения, например установите напоминание.
- Нажмите кнопку сохранения
На этом этапе Outlook покажет мне окно сообщения, в котором говорится: «Элемент не может быть сохранен, потому что он был изменен другим пользователем или в другом окне».
Я нахожу, что это происходит довольно часто, если у меня включена надстройка синхронизации встреч, но никогда не происходит, если я отключу ее.
Похоже, что Outlook обнаруживает изменение моего кода, сохраняя свойство пользователя через Redemption, и ему это не нравится.
Это потому, что Redemption обращается к таблице MAPI напрямую для сохранения данных, в то время как Outlook по-прежнему кэширует COM-объект встречи, когда я открываю его слишком быстро. Чтобы назначенная мною встреча "устарела" к тому времени, когда я хочу ее снова сохранить?
Версия Outlook, с которой я тестирую, - это Outlook 2016.