繁体   English   中英

在错误0x800706BA之前捕获RPC锁定

[英]Catch RPC lock before error 0x800706BA

我们有一些工具和服务可以与同一个COM服务器通信。 一段时间后,我们得到了错误

COMException(0x800706BA)RPC服务器不可用

似乎一个应用程序阻止了RPC,而第二个应用程序尝试进​​行通信并失败。 它不是同一个应用程序,有时它需要几个小时才能发生。 但更糟糕的是:在RPC错误首次出现之后,所属应用程序每次向该COM服务器调用COM函数时,都会收到相同的RPC错误-它已死。 重新启动应用程序(或服务)后,所有程序运行良好,直到下一次...是否有办法确定RPC是否可用,然后等待其释放? 如果不是,我必须创建一个新的COM对象,并希望我不必重新启动应用程序。

谢谢你的帮助。

(0x800706BA)RPC服务器不可用意味着客户端无法联系COM服务器端的RPC服务器。 请注意,有一个单独的代码用于RPC服务器太忙 发生这种情况的原因是以下任何一种情况:

  • COM服务器在另一台计算机上,并且存在连接问题
  • COM服务器已通过退出进程或崩溃而终止

请注意,后者几乎符合您的描述-实例化了一个COM对象,获得了指向它的指针,并且它工作了一段时间,然后发生了某些事情,并且通过该指针访问该对象的任何尝试都会导致RPC服务器不可用,因为没有再运行的COM服务器进程以及其中的RPC服务器也消失了。 在这种情况下,您唯一可以做的就是重新实例化COM对象。 您的应用程序中将需要其他逻辑来解决此类情况。

我遇到了一个COM +对象的错误,并将其解决。 如果在应用程序中创建并使用了COM +对象,并且随着时间的流逝,如果COM +应用程序被回收,则重复使用同一COM +对象会出现此错误。 您可能必须重新实例化COM +对象才能使其再次工作。 您可以尝试以下步骤来重现该错误:

  1. 将COM +应用程序的生命周期回收限制设置为1分钟。
  2. 编写一个应用程序以创建COM +对象并进行COM +方法调用。 让应用程序休眠一分钟以上,然后尝试进行方法调用。
  3. 现在,您将收到错误(0x800706BA)RPC服务器不可用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM