我用Delphi7写了个工程,加入了COM对象使其成为了COM服务器,然后我用BCB6开发了COM控制器端,通过CreateOleObject调用COM服务器,使其进程启动运行。COM服务器端提供几个接口给客户端使用,如传递字符串给COM服务器端显示,控制COM服务器程序窗口大小的参数等,并且2个进程间也可以通过消息通信,如关闭,最大化、最小化等消息。
系统中,COM客户端能正常启动和控制COM服务器端,两个进程间所有操作均可用和正常,但在系统运行4-6个小时后(通常是不对COM服务器端或客户端做任何操作),COM客户端程序报错“RPC服务器不可用”,此时COM服务器端变得很难响应鼠标操作并且只能通过Windows的进程管理器将其杀死,操作系统仍可运行其他程序,杀死COM服务器端后,COM客户端程序仍能工作,但每次获得输入焦点都将弹出提示小窗口“RPC服务器不可用”。关闭COM客户端程序后在重启COM客户端,然后启动和控制COM服务器端,一切有开始正常,4-6个小时后又出现(经常,但不一定是必定)类似错误。是什么原因??各位朋友有没有遇见过??请指点,谢谢!!

解决方案 »

  1.   

    接收到“未找到域”、“服务器不可用”或“RPC 服务器不可用”等错误消息。
    原因:名称注册或名称解析问题。解决方案:验证域名系统 (DNS) 是否可用以及运行是否正常。在相应服务器上运行 Netdiag /debug 命令。这将评估 NetBIOS、DNS 和服务的注册情况。
      

  2.   

    倒是有可能是名称注册的问题,我在Delphi工程的run/parameters里设置了/register命令,然后在不同的路径下直接运行该COM服务器端程序就进行了注册,在注册表里确实看到不同路径键值的同名服务器端程序,是这个引起的吗??我在同一台机器上运行,没有用到DCOM,应该和DNS无关吧?lovendll兄,能否将得更详细些??