从msdn看来,它似乎IMessageFilter
不能处理所有异常,例如,在某些时候,办公应用程序“暂停”它们的对象模型,此时它不能被调用并抛出:0x800AC472 (VBA_E_IGNORE)
为了解决这个问题,您必须将您的调用置于循环中并等待它成功:
while(true)
{
try
{
office_app.DoSomething();
break;
}
catch(COMException ce)
{
LOG(ce.Message);
}
}
我的问题是:如果每次调用办公应用程序的对象模型都需要这个样板代码,那么实施有什么意义IMessageFilter
吗?