【发布时间】:2010-06-22 22:13:22
【问题描述】:
当你有一个软件运行一个进程外的 COM 服务器并且 COM 服务器崩溃时,它会向用户显示一条消息(假设它是一个未处理的异常)还是会发生什么?
另外,COM客户端也会崩溃,知道这个客户端非常依赖这个COM服务器吗?
当服务器发生未处理的异常时,COM 服务器和 COM 客户端的行为是什么?
【问题讨论】:
当你有一个软件运行一个进程外的 COM 服务器并且 COM 服务器崩溃时,它会向用户显示一条消息(假设它是一个未处理的异常)还是会发生什么?
另外,COM客户端也会崩溃,知道这个客户端非常依赖这个COM服务器吗?
当服务器发生未处理的异常时,COM 服务器和 COM 客户端的行为是什么?
【问题讨论】:
COM 客户端将从下一个 COM 调用和所有其他调用中获取 RPC_E_SERVERFAULT 作为 HRESULT,直到服务器重新启动。只要客户端检查其错误代码,这不一定会导致崩溃。但是,对于客户端来说,这可能不是可恢复的错误,因此在收到 RPC_E_SERVERFAULT(或者,实际上是任何 RPC_E 错误代码)时,您应该启动正常退出。
【讨论】:
RPC_E_SERVERDIED还是RPC_E_SERVERFAULT取决于服务器死机的确切方式,但对客户端的意义基本相同。