我的代码是微软的Outlook插件,用于创建一队60+人没有日历。该公司使用微软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服务器本身?
使用GetUserAvailability EWS操作 - 它允许请求的F / B在一个单一的通话为多个用户的信息。
我发现了一个很好的解决自己:我没有使用Outlook互操作的API,但是使用EWS托管API调用到Exchange服务器本身。
有一位优秀的集101 sample projects的。 (这真是101样本!)和非常好的step-by-step tutorial入门与EWS托管API。
“交易所2013获取用户的状态设置编程”是,我使用的样本。
不过,我渴望听到的,因此用户可选择的解决方案。