2015-09-28 59 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持有的活动引用到上述其中一个对象,您的新引用仍将指向到过时的对象副本。因此,一旦完成定期约会,请立即发布您的引用,这一点非常重要。