我们有一些与同一个COM服务器通信的工具和服务。一段时间后,我们得到错误
COMException(0x800706BA)RPC服务器不可用
似乎一个应用程序阻塞了RPC,而第二个应用程序尝试通信并失败。它不是相同的应用程序,有时它需要几个小时才能发生。但最糟糕的是:在RPC错误第一次出现之后,所属应用程序每次调用此COM服务器的COM函数时都会获得相同的RPC错误 - 它已经死了。重新启动应用程序(或服务)后,所有运行良好,直到下次... 有没有办法确定RPC是否可用,然后等到它空闲?如果不是,我必须创建一个新的COM对象,并希望我不必重新启动应用程序。
感谢您的帮助。
答案 0 :(得分:1)
(0x800706BA)RPC服务器不可用表示客户端无法联系COM服务器端的RPC服务器。请注意, RPC服务器的单独代码太忙。这可能是因为发生以下任何一种情况:
请注意,后者几乎与您的描述相匹配 - 您实例化了一个COM对象,获得了指向它的指针并且它工作了一段时间然后发生了一些事情,并且任何通过该指针访问该对象的尝试都会产生 RPC服务器不可用因为很可能没有COM服务器进程再次运行,并且它内部的RPC服务器也消失了。在这种情况下,你唯一能做的就是重新实例化COM对象。您需要在应用程序中使用其他逻辑来解决此类情况。
答案 1 :(得分:0)
我遇到了一个COM +对象的错误,并解决了它。如果在应用程序中创建并使用COM +对象,并且如果COM +应用程序被回收,则重复使用相同的COM +对象会产生此错误。您可能必须重新实例化COM +对象才能使其再次运行。 您可以尝试以下步骤来重现错误: