我为一家贸易公司工作,我们的用户通过远程桌面连接与交易所设施内的物理服务器交互,从而与主交易应用交互。
我们的软件的一个function是,如果networking出现问题并且RD会话断开连接,它将自动断开并拉出所有报价。
通过覆盖应用程序主窗体的WndProc
方法来检测这个问题,其中消息参数被检查:
Msg == WM_WTSSESSION_CHANGE
和:
WParam.ToInt32() == WTR_REMOTE_DISCONNECT
这在远程桌面完全断开连接的正常情况下似乎工作得很好。
然而,有时用户会遇到短时间的明显断开连接,RD会话无响应(即,点击不起作用),但显然上述消息未被接收/处理。 在一会儿 – 通常约10秒钟 – 用户看到消息“重新连接到远程桌面…”(或类似的东西),并突然RD会话再次开始响应。
由于这种拉引式远程桌面断开function的整个想法是为了防止基本上我们的应用程序在没有用户能够看到发生的事情的情况下进行交易,所以我们非常希望能够检测RD会话是在什么时候我将描述为“几乎断开”的状态。
有人知道我们如何能够检测到这一点?
我唯一的建议是不断ping通交换服务器,如果ping延迟太高,请断开连接。
我不认为交易所会赞赏这个想法。