問題
Exchange マネージ API を使用して会議室から予定データを取得できるようにする必要があります。ExchangeService.GetUserAvailability()
次のように使用することで、この目的をうまく果たすサービスを約1か月間実行しました。
private IEnumerable<CalendarEvent> GetEvents(ExchangeService ExchangeService, string room, DateTime time, DateTime end)
{
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
end = new DateTime(time.Ticks + Math.Max(end.Ticks - time.Ticks, time.AddDays(1).Ticks - time.Ticks));
AttendeeInfo roomAttendee = new AttendeeInfo();
roomAttendee.AttendeeType = MeetingAttendeeType.Room;
roomAttendee.SmtpAddress = GetEmailAddress(room);
attendees.Add(roomAttendee);
Collection<CalendarEvent> events = ExchangeService.GetUserAvailability(
attendees,
new TimeWindow(time, end),
AvailabilityData.FreeBusy
).AttendeesAvailability[0].CalendarEvents;
return (from e in events
where e.EndTime > time
select e);
}
ただし、最近、このサービスを拡張して、より長い期間を必要とする他のタスクを実行する必要がありました (1 日から数か月になりました)。この方法は、時間の経過とともに非常に非効率になり、結果が多すぎるとエラーが発生することがあります。
質問
これはこれを行う最も効率的な方法ですか?これ以上の方法は見つかりませんでしたが、確認していただければ幸いです。