我编写了一个需要从交换服务器获取约会信息的 VSTO 加载项。
在交换时 (Outlook Web Access) 我更改了约会的主题行。当我看到 Outlook 将主题行更改为新值时,我尝试以编程方式获取新值,并且大多数情况下它会获取旧值,而不是 Outlook 中出现的值。
我尝试处理ItemChange事件并使用 .save 函数保存项目,但它似乎没有任何区别。
有谁知道为什么我不能在 Outlook 约会到达 Outlook 后立即以编程方式从它们中获取值?
那种现在可以工作的代码,非常丑陋并且是一项重要的工作,如下所示:
Public _idOfAppointmentCurrentlySyncing As New List(Of String)
Public _idOfAppointmentCurrentlySyncingNormal As New List(Of String)
Private Sub appointmentSave(ByVal Item As Object) Handles _m_olAppointment.ItemChange, _m_olAppointment.ItemAdd
Try
Dim dateNow As Date = Date.Now
If TypeOf Item Is Outlook.AppointmentItem Then
If (dateNow - _lastFolderSwitch).TotalMilliseconds > 3000 Then
Dim appointmentItem As Outlook.AppointmentItem = CType(Item, Outlook.AppointmentItem)
Dim lastModifiedDates As Date = commonToolsMethod.getAppointmentDateParameter(appointmentItem, "lastModifiedDates")
If _idOfAppointmentCurrentlySyncing.Contains(appointmentItem.EntryID) Then
Dim outlookLastSyncTime As Date = commonToolsMethod.getAppointmentDateParameter(appointmentItem, "OutlookLastSyncTime")
If outlookLastSyncTime <> Date.MaxValue And Date.Compare(lastModifiedDates, outlookLastSyncTime) <> 0 Then
commonTools.addPropertyToAppointment(appointmentItem, "lastModifiedDates", outlookLastSyncTime)
appointmentItem.Save()
Else
_idOfAppointmentCurrentlySyncing.Remove(appointmentItem.EntryID)
End If
Else
If _idOfAppointmentCurrentlySyncingNormal.Contains(appointmentItem.EntryID) = False Then
DebugWriter("Normal Save: " + appointmentItem.Start.ToString)
Try
If appointmentItem.Body <> "" Then
appointmentItem.Body += " "
End If
Catch ex As Exception
End Try
_idOfAppointmentCurrentlySyncingNormal.Add(appointmentItem.EntryID)
commonTools.addPropertyToAppointment(appointmentItem, "lastModifiedDates", dateNow.ToString)
appointmentItem.Save()
Marshal.FinalReleaseComObject(appointmentItem)
appointmentItem = Nothing
GC.Collect()
Else
_idOfAppointmentCurrentlySyncingNormal.Remove(appointmentItem.EntryID)
End If
End If
Else
_lastFolderSwitch = _lastFolderSwitch.AddMilliseconds(100)
End If
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
提前谢谢了。