2010-06-22 117 views
0

当您有一段运行进程外COM服务器和COM服务器崩溃的软件时,它是否会向用户显示一条消息(假设它是一个未处理的异常)或将会发生什么?COM组件崩溃

此外,COM客户端崩溃了,知道这个客户端依赖于这个COM服务器相当多吗?

当服务器发生未处理的异常时,COM服务器和COM客户端的行为如何?

回答

3

来自下一个COM呼叫的COM客户端将得到RPC_E_SERVERFAULT作为HRESULT,直到服务器重新启动为止。这不一定会导致崩溃,只要客户端检查其错误代码即可。但是,这对于客户端来说可能不是一个可恢复的错误,所以在得到RPC_E_SERVERFAULT(或者确实是任何RPC_E错误代码)后,您应该可以启动一个优雅退出。

+0

不是这样,当服务器引发未处理的异常时,您将得到该返回码。很难处理顺便说一句。应该获得RPC_E_SERVERDIED。但是,是的,不处理任何这些错误,客户端应用程序已经死了。 – 2010-06-22 17:23:49

+0

@Hans,无论你是否获得RPC_E_SERVERDIED或RPC_E_SERVERFAULT,都取决于服务器的确切使用方式,但客户端的重要性基本相同。 – 2010-06-22 17:42:15

+0

不幸的是,RPC_E_SERVERFAULT不会使服务器死亡。那么,无聊的细节也许。 – 2010-06-22 17:46:00