出现添加约会异常时,由于消息已更改,无法执行操作

时间:2018-07-10 20:09:54

标签: c# outlook office-interop outlook-addin

在添加新的定期约会并添加定期约会的例外时,Outlook 2016会引发异常: System.Runtime.InteropServices.COMException(0x80040109):由于消息已更改,因此无法执行该操作。

以下代码示例保存新约会并添加异常:

AppointmentItem item1 = _calendar.Items.Add(OlItemType.olAppointmentItem)
//preparing app...
item1.Save();
item1.Session.Logoff();
item1.Session.Logon(null, null, null, null);
RecurrencePattern pattern1 = item1.GetRecurrencePattern();
//preparing pattern....
item1.Save();
item1.Session.Logoff();
item1.Session.Logon(null, null, null, null);
ArrayList list1 = appointment.Exceptions; //collection of exceptions
Utils.FreeComObject(pattern1);
pattern1 = null;
if (list1.Count > 0)
{
    pattern1 = item1.GetRecurrencePattern();
    foreach (ClsAppt appointment1 in list1)
    {
        DateTime time1 = Convert.ToDateTime(appointment1.StartDate.ToString("G"));
        AppointmentItem item2 = null;
        try
        {
            item2 = pattern1.GetOccurrence(time1);                  
            //preparing exception
            item2.Save();
            item2.Session.Logoff();
            item2.Session.Logon(null, null, null, null);                        
        }
        catch (System.Exception exception1)
        {
            LogError(exception1.ToString());
        }
        finally
        {
            Utils.FreeComObject(item2);
            item2 = null;
            Utils.FreeComObject(pattern1);
            pattern1 = null;
        }
        item1.Save();
        item1.Session.Logoff();
        item1.Session.Logon(null, null, null, null);
        pattern1 = item1.GetRecurrencePattern();
    }
    item1.Save();
    item1.Session.Logoff();
    item1.Session.Logon(null, null, null, null);
}

此代码可在任何地方使用,但一个Outlook实例2016会引发异常。 调用item2.Save()时出现错误。 当捕获到异常时,代码将尝试调用item1.Save(),但在此调用时再次引发相同的异常。

有人可以告诉我这些异常的原因是什么? 同样,可以将同一约会添加到另一个Outlook中而不会出现问题。

0 个答案:

没有答案