Поделиться через


Поиск определенной встречи в серии повторяющихся встреч

В этом примере показывается способ получения объекта AppointmentItem, который представляет конкретную встречу в серии повторяющихся встреч.

Пример

Примечание.

Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для Microsoft Office Outlook 2007.

Чтобы найти экземпляр повторяющейся встречи, которая происходит в определенную дату и в определенное время, следует использовать метод GetOccurrence(DateTime) объекта RecurrencePattern для получения объекта AppointmentItem.

При работе с элементами повторяющейся встречи следует удалить все предыдущие ссылки, получить новые ссылки на элемент повторяющейся встречи перед обращением к элементу или его изменением и удалить эти ссылки сразу после завершения работы и сохранения изменений. Такой подход применяется к повторяющемуся объекту AppointmentItem и любому объекту Exception или RecurrencePattern. Чтобы удалить ссылку в Visual Basic, установите для существующего объекта значение Nothing. В C# следует явно освободить память для этого объекта.

Следует отметить, что даже после удаления ссылок при попытке получения новой ссылки, когда имеется активная ссылка (удерживаемая другой надстройкой в Outlook) на один из вышеупомянутых объектов, новая ссылка будет продолжать указывать на устаревшую копию объекта. Поэтому важно удалять ссылки сразу же по окончании работы с повторяющейся встречей.

В представленном ниже примере кода CheckOccurrenceExample использует повторяющуюся встречу, созданную в примере кода в статье Создание встречи, которая повторяется по недельному расписанию. Затем вызывается метод GetOccurrence, чтобы определить, начинается ли повторяющаяся встреча в определенную дату и время. Чтобы гарантировать продолжение выполнения процедуры, даже если предоставленные сведения не соответствуют дате начала и времени вхождения повторяющейся встречи, в примере используется блок try…catch. После вызова метода GetOccurrence для каждой встречи в серии процедура CheckOccurrenceExample проверяет переменную singleAppt, чтобы определить, является ли она пустой ссылкой (это указывает на сбой метода и на то, что объект AppointmentItem не был получен).

Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void CheckOccurrenceExample()
{
    Outlook.AppointmentItem appt = Application.Session.
        GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).
        Items.Find(
        "[Subject]='Recurring Appointment DaysOfWeekMask Example'")
        as Outlook.AppointmentItem;
    if (appt != null)
    {
        try
        {
            Outlook.RecurrencePattern pattern =
                appt.GetRecurrencePattern();
            Outlook.AppointmentItem singleAppt =
                pattern.GetOccurrence(DateTime.Parse(
                "7/21/2006 2:00 PM"))
                as Outlook.AppointmentItem;
            if (singleAppt != null)
            {
                Debug.WriteLine("7/21/2006 2:00 PM occurrence found.");
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

См. также