我在一家贸易公司工作,我们的用户通过远程桌面连接到物理上位于交易所设施内的服务器与主要交易应用程序进行交互。
我们软件的一个特点是,如果网络出现问题并且 RD 会话断开连接,它会自动断开并提取所有报价。
检测这一点是通过覆盖WndProc
应用程序主窗体的方法来完成的,其中检查了 message 参数:
Msg == WM_WTSSESSION_CHANGE
和:
WParam.ToInt32() == WTR_REMOTE_DISCONNECT
在远程桌面完全断开连接的正常情况下,这似乎很有效。
然而,有时用户会经历短暂的明显断开连接,其中 RD 会话变得无响应(即单击不执行任何操作),但显然没有接收/处理上述消息。在几分钟内——通常是大约 10 秒——用户看到消息“重新连接到远程桌面......”(或类似的东西)并且突然 RD 会话再次开始响应。
由于这个 pull-quotes-on-remote-desktop-disconnect 功能的整个想法是为了防止出现这样的情况:基本上,我们的应用程序在用户无法看到正在发生的情况下进行交易,因此我们非常希望能够检测 RD 会话何时处于我将描述为这种“几乎断开连接”的状态。
有人知道我们如何检测到这一点吗?