我的代码是MS Outlook插件,用于为60多个团队创建缺勤日历。该公司使用MS Exchange。
我正在使用以下代码检索他们的忙/闲状态:
var namespace = ThisAddIn.thisOutlookApp?.GetNamespace( "MAPI" );
var recp = namespace.CreateRecipient( personName );
var freeBusy = recp.FreeBusy( startDate, MinPerChar: 60, CompleteFormat: true );
尽管此文件有效,但一次调用FreeBusy()
大约需要300毫秒。对于60个人而言,时间跨度为三个月,这意味着我的代码将花费近一分钟。
我也尝试了这种替代方法:
recp.Resolve();
var exu = recp.AddressEntry.GetExchangeUser();
var freeBusy = exu.GetFReeBusy(...)
但没有区别。 VBA中的相同代码显示相同的性能。
加快通话速度是他们的窍门,还是获取闲/忙信息的另一种方法,例如通过访问其他人的日历或与MS Exchange服务器本身进行对话?
答案 0 :(得分:1)
使用GetUserAvailability EWS操作-允许在单个呼叫中为多个用户请求f / b信息。
答案 1 :(得分:0)
我自己找到了一个很好的解决方案: 我没有使用Outlook Interop API,而是使用EWS托管API调用Exchange服务器本身。
101 sample projects有一套出色的工具。 (实际上是101个示例!)以及一个很好的step-by-step tutorial入门EWS托管API。
“ Exchange 2013以编程方式获取用户的状态设置”是我使用的示例。
但是,我很想听听SO用户的替代解决方案。