2015-09-28 58 views
0

這裏是我的代碼:每日定期約會得到存儲爲每週定期約會在Outlook 2013

Outlook.AppointmentItem oMeet; 

Meeting Meet; 

Hashtable htrecc = GetReccuranceTable(strRec); 

    if (Meet.recctype.Substring(0, 3) == "day") 

    { 

    oMeet.GetRecurrencePattern().RecurrenceType = OlRecurrenceType.olRecursDaily; 

    oMeet.GetRecurrencePattern().Interval = Convert.ToInt32(htrecc["Interval"]); 

    if (string.Equals("no", htrecc["Occurence"])) 

     oMeet.GetRecurrencePattern().NoEndDate = true; 

    else 

      if (!string.IsNullOrEmpty(Convert.ToString(htrecc["Occurence"]))) 

       oMeet.GetRecurrencePattern().Occurrences = Convert.ToInt32(htrecc["Occurence"]); 

      else 

       oMeet.GetRecurrencePattern().PatternEndDate = Meet.EndTime; 

    } 

請建議,如果我錯了任何地方,因爲每當我試圖插入每日預約到日曆它被轉換成日曆上的每週約會

回答

0

我建議從打破屬性和方法調用鏈開始,並在單獨的代碼行中聲明它們。每次在代碼中調用GetRecurrencePattern方法時,都會得到一個新實例。

當您處理定期約會項目時,應先釋放任何之前的參考,在訪問或修改項目之前獲取對定期約會項目的新參考,並在完成後立即發佈這些參考並保存更改。此做法適用於定期的AppointmentItem對象以及任何Exception或RecurrencePattern對象。要在Visual Basic for Applications(VBA)或Visual Basic中發佈引用,請將該現有對象設置爲Nothing。在C#中,顯式釋放該對象的內存。完成使用後,請使用System.Runtime.InteropServices.Marshal.ReleaseComObject釋放Outlook對象。然後在Visual Basic中將變量設置爲Nothing(C#中的空值)以釋放對該對象的引用。詳細瞭解Systematically Releasing Objects article

請注意,即使在您釋放引用並嘗試獲取新引用之後,如果仍有一個由另一個插件或Outlook持有的活動引用到上述其中一個對象,您的新引用仍將指向到過時的對象副本。因此,一旦完成定期約會,請立即發佈您的引用,這一點非常重要。