![]() |
1
1
下面是一个简单的处理方法。我最近不得不与Visual Studio接口,我发现这很好地工作,如果您愿意在COM对象变得无限繁忙时快速失败的话。看看这是否对你有用:
在作用域中具有此委托和方法之后,下面是使用匿名委托的方法调用和属性访问的示例。
我故意隐藏了ComException,因为我不想要它,但是如果需要它,只需在调用方法内的MakeriskyComCall方法内设置一个ComException变量。您还可以检查特定的hresult,它指示正在等待繁忙的进程,而对于其他hresult,则会更快地失败。这个解决方案很快并且避免了所有的COM互操作混乱,缺点是它不漂亮,但是它可以工作,而且对于代码维护者来说更容易理解(我认为)。 |
![]() |
2
1
当访问一个正忙的Out-Proc自动化服务器时,您确实可以得到一个异常。对于Office,一种可能发生这种情况的方法是,如果打开文档时有一个宏在运行。如果连接到打开了对话框的Office应用程序实例,也会出现问题。 This article 描述如何通过实现IOleMessageFilter错误处理程序来避免这种情况。本文讨论的是Visual Studio的自动化,但是对于自动化其他进程外自动化服务器(如Office),原理和技术是相同的。 |
![]() |
Cleric · C#运行主动自动化对象-如何源事件? 6 年前 |
![]() |
Daniël J · 使用GUI制作COM服务器的最佳实践是什么? 6 年前 |
![]() |
Toponimo · 从Python访问COM方法 6 年前 |
|
user8666372 · 自动向可用引用添加引用 7 年前 |