Foxtable(狐表)用户栏目专家坐堂 → 如何让客户端openQQ重连30秒后,不再尝试重连而关闭程序?像QQ尝试60秒失败后变灰头像离线


  共有2157人关注过本帖树形打印复制链接

主题:如何让客户端openQQ重连30秒后,不再尝试重连而关闭程序?像QQ尝试60秒失败后变灰头像离线

帅哥哟,离线,有人找我吗?
chen3728060
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
  发帖心情 Post By:2016/12/22 9:04:00 [只看该作者]

我的服务器是有防火墙,不能直接ping,用不了timeout的功能,只能用tryhost。但是tryhost又没有timeout的功能,我想写在disconnect事件里,断开连接30秒后执行tryhost,连接不上就关闭程序。怎么用代码设置30秒后才执行呢?

 

我爬帖找到延时的代码,大红袍老师写的

 

Dim LastTime As Date = Date.now
Do until (Date.Now - LastTime).TotalSeconds >= 2
    Application.doevents
Loop
msgbox("2秒后看到")

 

那我写的代码如下

 

Select Case e.Mode
    Case 3
        MessageBox.show("连接超时,请重新打开程序")
        Syscmd.Project.Exit()
    Case 4
        MessageBox.show("您已在其他地方的登陆,程序将被关闭")
        Syscmd.Project.Exit()
End Select

 

Dim LastTime As Date = Date.now
Do until (Date.Now - LastTime).TotalSeconds >= 2
    Application.doevents
Loop
msgbox("2秒后看到")

 

效果是断线后,先是停住2秒(此时客户端并没有尝试重连),然后弹出msgbox,然后openqq 的PopMessage弹出来,重连。

但是我想要的效果是  断线后,尝试重连,重连尝试2秒后,弹出msgbox

 

而且还有一个问题,就是我关闭软件的时候,一样会是先停住2秒,然后弹出msgbox,然后才能关闭,我一开始都以为软件无端端死了,突然才想起来是这个延时惹的祸。明显用户体验不行

 

请问有什么好的解决方法?

[此贴子已经被作者于2016/12/22 9:30:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 9:54:00 [只看该作者]

 用计时器吧。做一个计划任务,间隔10秒去连接一下服务器,如果如果正常,就把计数清零,如果不正常,就累加1。如果累加到了5次,你就执行你想执行的代码呗。

 回到顶部
帅哥哟,离线,有人找我吗?
chen3728060
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(有点色)?用计时器吧。做一个计划任务,...  发帖心情 Post By:2016/12/22 10:30:00 [只看该作者]

这个真的是正解!问题解决

 

全部代码里定义一个整数变量

public TryConnectTimes  as integer = 0

 

在主窗口的timetick事件

If TryConnectHost("www.baidu.com") = False Then
    TryConnectTimes = TryConnectTimes+1
Else
    TryConnectTimes = 0
End If

If TryConnectTimes = 5 Then
    MessageBox.show("软件与服务器失去连接超过30秒,请重新打开")
    syscmd.project.Exit()
End If

 

timetick设置6000毫秒

[此贴子已经被作者于2016/12/22 10:31:36编辑过]

 回到顶部
总数 13 上一页 1 2