2011-11-14 182 views
0

我使用C#來通過我的Outlook日曆中的所有約會,並試圖找出是否有任何衝突,但是當我檢查Appointment.Conflicts.Count時,它始終爲0,即使我已經添加了多個同時發生的約會。爲什麼Appointment.Conflicts.Count始終爲0?

下面是一些示例代碼:

var outlook = new Microsoft.Office.Interop.Outlook.Application(); 
var calendar = outlook.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar); 

Outlook.AppointmentItem appointment; 
foreach (Outlook.AppointmentItem item in calendar.Items) 
{ 
    if (item.Conflicts.Count > 0) 
    { 
     Console.WriteLine("Never gets hit"); 
    } 

} 

如何確定是否在Outlook衝突預約C#中的另一個約會編程?

+0

你可能想看看[這個答案](http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c-sharp/158752# 158752)如果你有清理問題。 –

+0

@JeffMercado我沒有任何清理問題。我假設item.Conflicts.Count會給我當前約會與時間明智(衝突)重疊的約會數量。它總是給0,即使我的約會有重疊(一個在另一個完成之前開始) – Daryl

+0

其實我所指的是你現在的代碼將會正確地清理Outlook過程中的問題,我真的不知道你有一個問題,你有一個不同的問題,你有資源,'outlook.Application'和'outlook.Application.Session',這些資源被獲取並且沒有被清理,如果你看看任務管理器,你可能會看到即使你關閉你的程序後也會運行outlook的實例,因爲這一點,請參閱答案。 –

回答

1

它看起來衝突屬性僅用於處理編輯衝突,而不是調度衝突。

參見:Conflict Resolution for Standard Outlook Item Types

還要注意的是,幾乎所有的outlook item types也有衝突的財產,即使是那些不具有調度特性(例如NoteItem)。

看起來您必須通過appointmentItem.Start和appointmentItem.End屬性以及AllDayEvent屬性來檢查日期範圍。

+0

同樣也有重複約會的問題,Outlook似乎使事情比他們需要的更復雜,但你是對的。 ..衝突是指在outlook服務器和本地客戶端之間同步項目的問題(比如你在本地機器上和從Web客戶端上更新了約會) – Daryl