我在一家贸易公司工作,我们的用户通过远程桌面连接与主要交易应用程序进行交互,该服务器实际位于交易所设施内.
我们软件的一个特点是,如果网络出现问题并且RD会话断开连接,它会自动断开连接并拉出所有引号.
通过覆盖应用程序主窗体的WndProc方法来检测这一点,其中检查message参数:
Msg == WM_WTSSESSION_CHANGE
和:
WParam.ToInt32() == WTR_REMOTE_DISCONNECT
这似乎在正常情况下远程桌面完全断开连接时效果很好.
然而,有时会发生用户经历短时间的明显断开连接,其中RD会话变得没有响应(即,点击不做任何事情)但显然不接收/处理上述消息.在几分钟内 – 通常是~10秒 – 用户看到消息“重新连接到远程桌面……”(或类似的东西),突然RD会话再次开始响应.
由于这种拉 – 引 – 远 – 桌面 – 断开功能的整体想法是为了防止基本上我们的应用程序在没有用户能够看到正在发生的事情的情况下进行交易的情况,我们非常希望能够检测RD会话何时处于我所描述的“几乎断开连接”状态.
谁知道我们怎么能发现这个?
解决方法
我唯一的建议是不断ping交换服务器,如果ping延迟太高,请断开连接.
我不认为交流会欣赏这个想法.