【问题标题】:Outlook Shared CalendarOutlook 共享日历
【发布时间】:2017-11-24 21:15:54
【问题描述】:

我正在尝试从一些共享交换日历中获取一些日历约会。第一次访问工作正常。但是当我再次调用该函数时。我得到一个超出范围的错误。

当我将所有全局变量设置为临时变量时,我收到错误“无法打开日历”。

如何创建一个 Outlook 实例然后再次关闭它。以便您可以在需要时创建一个新的?

谢谢

    Outlook.Folder _folder = null;
    Outlook.Application oApp;
    Outlook.Recipient recip;
    private void GetCalendar(string mailAddressOfCalendar)
    {
        if (_folder != null)
        {
            ForceUpdateAddOnCalaendar(_folder);
        }
        else
        {
            oApp = new Outlook.Application();
            Outlook.AddressEntry addrEntry = oApp.Session.CurrentUser.AddressEntry;
            if (addrEntry.Type == "EX")
            {
                recip = oApp.Session.CreateRecipient(mailAddressOfCalendar);
                if (recip.Resolve())
                {
                    try
                    {
                        if (_folder == null)
                        {
                            _folder =
                                oApp.Session.GetSharedDefaultFolder(
                                recip, Outlook.OlDefaultFolders.olFolderCalendar)
                                as Outlook.Folder;
                        }
                        ForceUpdateAddOnCalaendar(_folder);
                    }
                    catch
                    {
                        MessageBox.Show("Could not open calendar",
                            "GetSharedDefaultFolder Example",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                    }
                }

            }
        }
    }

【问题讨论】:

    标签: c# outlook calendar exchange-server


    【解决方案1】:

    发现问题: 使用这种方法可以正常工作。问题实际上不是函数,而是我创建的全局预约列表。因为我在访问列表的同时更新列表时遇到了冲突。这就是它每次尝试都会崩溃的原因。

        private void GetCalendar(string mailAddressOfCalendar)
        {
            Outlook.Application oApp = new Outlook.Application();
            Outlook.AddressEntry addrEntry = oApp.Session.CurrentUser.AddressEntry;
            if (addrEntry.Type == "EX")
            {
                Outlook.Recipient recip = oApp.Session.CreateRecipient(mailAddressOfCalendar);
                if (recip.Resolve())
                {
                    try
                    {
                        Outlook.Folder folder =
                            oApp.Session.GetSharedDefaultFolder(
                            recip, Outlook.OlDefaultFolders.olFolderCalendar)
                            as Outlook.Folder;
    
                        ForceUpdateAddOnCalaendar(folder);
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Could not open calendar",
                            e.ToString(),
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多