我正在编写一个 Com 服务器,并且我编写了代码来检测 COM 客户端意外关闭时的情况,在这种情况下,我应该在 COM 服务器代码中关闭 COM 服务器。
我怎样才能做到这一点?
UPD:我遇到了 COM 服务器挂起或更正确的情况我无法从 COM 客户端连接到 COM 服务器,但是包含 COM 服务器的应用程序是活动的,所以我认为 COM 服务器可以检测到所有旧的 COM 客户端都已断开连接/关闭/崩溃,应用程序将重新启动,因为没有附加新客户端。
我在单独的线程中在 COM 客户端中编写了以下代码
while(not we are closing)
{
unknown->QueryInterface(IComServer, &server);
if (server)
return;
}
Run Code Online (Sandbox Code Playgroud)
所以 COM 客户端可以等到服务器真正准备好工作
UPD2:刚刚测试:12 分钟后我的 COM 服务器关闭
COM 定期 ping 客户端以查看它们是否还活着并从死客户端运行接口。所以你的服务器最终会发现。