首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在错误0x800706BA之前捕获RPC锁

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

Stack Overflow用户
提问于 2013-12-04 14:08:44
回答 2查看 727关注 0票数 2

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

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

似乎有一个应用程序阻止RPC,而第二个应用程序试图通信并失败。它从来都不是同一个应用程序,有时要花上几个小时才能实现。但最糟糕的是:在RPC错误第一次出现之后,归属应用程序每次向这个COM服务器调用COM函数时都会得到相同的RPC错误--它已经死了。在重新启动应用程序(或服务)后所有运行良好,直到下一次..。是否有一种方法可以决定RPC是否可用,然后等待直到它是免费的?否则,我必须创建一个新的COM对象,并希望不必重新启动应用程序。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-12-05 06:46:32

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

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

注意,后者与您的描述非常匹配--您实例化了一个COM对象,获得了一个指向它的指针,它工作了一段时间,然后发生了一些事情,任何通过该指针访问对象的尝试都会产生不可用的RPC服务器,因为很可能已经没有COM服务器进程运行了,并且它内部的RPC服务器也消失了。在这种情况下,您能做的唯一有意义的事情是恢复COM对象。在您的应用程序中,您需要额外的逻辑来解释这种情况。

票数 1
EN

Stack Overflow用户

发布于 2016-04-15 15:24:53

我用一个COM+对象遇到了这个错误,并解决了它。如果在应用程序中创建和使用COM+对象,如果COM+应用程序被回收,则重复使用同一个COM+对象将产生此错误。您可能需要重新实例化COM+对象才能使它再次工作。您可以尝试以下步骤来再现错误:

  1. 将COM+应用程序的生存期循环限制设置为1分钟。
  2. 编写一个应用程序来创建COM+对象并进行COM+方法调用。让应用程序休眠一分钟以上,现在尝试进行方法调用。
  3. 现在,您将收到一个错误(0x800706BA) RPC服务器不可用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20377540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档