有关三层结构midas,网络突然断开,在TSocketConnection中如何知道,请高手指教,谢谢...

解决方案 »

  1.   

    TSocketConnection放在DLL中,当网络断开后,没有发生SocketConneClientAfterDisconnect事件,请高手指教
      

  2.   

    SocketConneClientAfterDisconnect事件是在执行TSocketConnection.Close方法或者设置TSocketConnection.Connected:=False之后触发的事件,网络意外中断不会触发该事件吧。估计你需要在客户端或者TSocketConnection所在的的COM组件对象中,定制一个定时查询网络状态的功能吧。
      

  3.   

    和SupportCallbacks这个参数有关系,SupportCallbacks=True就会触发,SupportCallbacks=False就不会触发
      

  4.   

    不一定, 断开有时是无法监测到的, 在用 socketConnection 前提下, 无法用 KeepAlive, 只能在服务端 scktsrvr 上设一个超时了
      

  5.   

    TSocketConnection 就只能在一次失败的操作中得知
      

  6.   

    不会, 得知失败后要手动 SocketConnection.Close, 再 Open, 相当重起了
      

  7.   

    意外断开SocketConnection是检测不到的
      

  8.   

    SupportCallbacks=False,得知失败后要手动SocketConnection.Close也会出现异常
    First chance exception at $7C812A5B . Exception class ESocketConnectionError with message '在一个非套接字上尝试了一个操作。'. Process Project2.exe ($FF8)
      

  9.   

    是, 在 mainform 或什么地方放一个 AppEvent, 的 OnException 中 if 那个 exception is ESocketConnectionError 就认为是网断这时 SocketConnection.Close, 此时可以让用户重登录什么的, 只有一次失败尝试后才知网断
      

  10.   

    comanche(太可怕) 有没有MSN或QQ,我的MSN:[email protected]
      

  11.   

    comanche(太可怕) 你好,上次我的问题也有你回答的,因为只有SupportCallbacks=False上次的问题就不会出现,但这里的问题要设置为SupportCallbacks=True就很方便解决,很难两全,
    http://community.csdn.net/Expert/topic/5127/5127987.xml?temp=.9595911上次问题