什么决定了进程外COM服务器注意到客户端已经死亡的时间?

问题描述 投票:5回答:1

在一个简单的Windows设置中,我们有一个COM单例,作为进程外服务器运行。

客户端通过调用cocreate进行连接,每个客户端都接收到服务器的同一实例的接口。

如果客户端正常关闭,则会释放其引用。

服务器有一些逻辑,可以在最后一次发布后的短时间内保持活动状态,以允许新的连接。

我对一个特殊情况感兴趣 - 服务器只运行一个崩溃的客户端(认为这是任何随机的未知崩溃),客户端退出而没有发布它的引用。

我观察到,在一段未定义的时间后说8分钟后,服务器会在服务器已将接口返回到客户端的任何对象的存根上接收释放调用。这似乎是一个自动清理,我假设是由LRPC层启动的。

这是在任何地方记录的,是否可以配置超时?

注意:整个过程中使用的多线程公寓模型。

windows com timeout rpc
1个回答
7
投票

DCOM垃圾收集下的这个https://web.archive.org/web/20171228092925/http://www.microsoft.com/msj/0398/dcom.aspx似乎表明DCOM使用120秒的超时需要错过三次,因此大约6分钟客户端将被视为断开连接。不幸的是,它也表明它不是用户可配置的,我找不到任何相反的东西。


推荐问答