0
我聽Items.ItemChange()事件上MAPIFolder,並觸發該事件處理火災時:Outlook日曆API:。GetRecurrencePattern()異常總是空
private async void monitor_AppointmentModified(object sender, EventArgs<AppointmentItem> e)
{
var item = e.Value;
Debug.Print("Outlook Appointment Modified: {0}", item.GlobalAppointmentID);
try
{
var result = await GCalUtils.ModifyEventAsync(item);
}
catch (Exception ex)
{
PrintToDebug(ex);
}
}
其中要求公用事業類修改的事件推到谷歌日曆:
public static async Task<Event> ModifyEventAsync(AppointmentItem item, string calendarId = PrimaryCalendarId)
{
var gCalEventId = item.UserProperties.Find(Resources.GCalId);
var updateRequest = Service.Events.Update(item.AsGCalEvent(), calendarId, gCalEventId.Value.ToString());
var result = await updateRequest.ExecuteAsync() as Event;
if (result != null && item.IsRecurring)
ModifyRecurrences(item, calendarId, result.Id);
return result;
}
...因此,如果該項目是一個反覆出現的AppointmentItem,我叫ModifyRecurrences:
private static async void ModifyRecurrences(AppointmentItem item, string calendarId, string eventId)
{
var exceptions = item.GetRecurrencePattern().Exceptions.Cast<Microsoft.Office.Interop.Outlook.Exception>().ToList();
if (!exceptions.Any()) return;
// other stuff happens... eventually... hopefully
}
...但無論我對系列發生的實際做了什麼,無論是將項目移動到新時間,調整開始時間還是結束時間,還是完全刪除項目,exceptions.Any()
致電總是返回假。有從來沒有集合中的任何異常,如果我正確理解概念,然後通過修改重複系列的實例我剛剛創建了一個異常,它應該顯示在異常集合。
我懷疑我可能有一個陳舊的AppointmentItem副本,但我沒有線索如何驗證。
不幸的是,贖回不是一種選擇。有關如何訪問OOM以避免此問題的任何指導? –
我不認爲你可以使用OOM來解決這個問題。您可以嘗試檢索出現blob並解析它。 –
你說,就好像我會知道如何。 :-) –