outlook插件,放慢了前景UI

时间:2009-02-07 21:43:30

标签: outlook add-in

我已经编写了一个outlook加载项来过滤垃圾邮件。问题在于,当加载项正在处理消息时,尤其是正在处理/读取的大型附件时,需要花费大量时间,因此主要的Outlook UI是 - 响应和用户无法对UI做任何事情。

是否存在运行加载项处理的异步方式,以便Outlook UI保持正常。

由于每个消息的处理,加载项会执行很多操作,因此需要花费很多时间。

2 个答案:

答案 0 :(得分:2)

如果大部分时间都花在Outlook API中,那么创建另一个线程将无法帮助您。由于Outlook中的线程模型,从另一个线程访问对象模型将导致调用被编组到主线程,这意味着现在您的UI仍然被冻结,后台线程正在阻塞。

如果大部分工作都花在做不接触Outlook对象模型的事情上,那么您可能会看到一个显着的改进,即分离一个单独的工作线程(或线程池)来处理您保存的附件。

答案 1 :(得分:0)

基本上和其他任何程序一样。如果你需要在主线程之外做一些事情(即创建另一个线程)。但是,没有特定于Outlook的API或框架。

但是,您必须特别注意异常处理。从线程中逃逸的未处理异常可能会产生最奇怪的结果(尽管在大多数情况下,Outlook只会崩溃)。

此外,如果可能的话,您应该尽量避免或至少严格限制从处理线程中访问Outlook对象模型。

最后,您应该确定的另一件事是,如果它以任何方式直接或间接使用与COM相关的函数,则专门为新线程显式调用CoInitializeEx / CoUninitialize