以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]用户端正常工作时,如果服务器端突然断开无连接时的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138332) |
||||
-- 作者:hanzhang98 -- 发布时间:2019/7/29 9:11:00 -- [求助]用户端正常工作时,如果服务器端突然断开无连接时的问题 老师好。 请教老师,在项目用户端正常工作或操作的时,项目服务器端突然断开(包括断电、关机、网络断路等)导致无连接时,导致项目用户端出现死机或假开机状况,项目程序停留在当前操作界面不能进行任何操作(鼠标点击窗口所有控件均无任何反映),点击项目的关闭按钮也退不出程序,最后只能用启动 “Win的任务管理器” 来强制退出和关闭项目程序。这种情况应如何处理?
能不能在项目某处设置代码,在遇到项目服务器端突然断开(包括断电、关机、网络断路等)导致无连接情况时,能即时跳出一个提示窗口,来提醒客户端用户“与服务器的链接断开”,并且用二个按钮【关闭退出】、【继续等待】来操作项目程序,如果点击【关闭退出】按钮、则能关闭项目并退出;如果点击【继续等待】按钮,则等待恢复链接并在等待一段时间后再次跳出“与服务器的链接断开”的提示窗口让客户端用户选择操作动作。 谢谢。 [此贴子已经被作者于2019/7/30 10:19:18编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/29 10:25:00 -- 参考:
|
||||
-- 作者:hanzhang98 -- 发布时间:2019/7/30 9:58:00 -- If TryConnectHost("192.168.152.102") = False Then \'如果服务器的地址不可以解析 If Network.Ping("192.168.152.102") = False Then \'如果服务器不可以连接 Dim Result As DialogResult Result = MessageBox.Show("与服务器的链接已断开! 是否退出系统? 点击【确定】,关闭正在进行的工作并退出系统; 点击【取消】,则继续等待服务器恢复链接.", "运行错误", MessageBoxButtons.OKCancel, MessageBoxIcon.Error) If Result = DialogResult.OK Then MessageBox.Show("关闭项目退出","提示") Syscmd.Project.Exit() Return Else MessageBox.Show("继续等待服务器恢复链接.","提示") End If End If End If
[此贴子已经被作者于2019/7/30 10:09:39编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/30 10:29:00 -- 嗯,看错了,这个是判断本机状态的,无法判断服务器状态 试试BeforeShowErrorMessage事件: If e.Message2.indexof("一般性网络错误") > -1 Or e.Message2.indexof("SQL Server 不存在") > -1 Then if vars("select") = false vars("select") = true Dim Result As DialogResult Result = MessageBox.Show("网络不通,点击是将退出,点击(否)继续等待网络正常后再操作!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then Syscmd.Project.Exit(False) Else e.Cancel=True Return End If end if end if
|
||||
-- 作者:hanzhang98 -- 发布时间:2019/7/31 10:37:00 -- 老师好。实现所需要的功能,但还存在一个问题,就是最后又出现一个系统错误提示如下图后才能退出项目程序。 在BeforeCloseProject事件有记录用户退出、及保存数据的代码如下: Dim dtt As DataTable = DataTables("登录日志") vars("行")("用户名") = _UserName vars("行")("退出")= "退出系统" vars("行")("退出日期时间")= Date.Now() dtt.save() For Each dt As DataTable In DataTables dt.save Next 请教老师,出现该错误提示是否要修正代码,如果只是提示作用,如何才能不让出现该系统错误提示。谢谢。
[此贴子已经被作者于2019/7/31 10:37:49编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/31 10:51:00 -- http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=138424 |
||||
-- 作者:hanzhang98 -- 发布时间:2019/7/31 11:25:00 -- 老师好。在 “第一行加上 if vars("行") is nothing then return” 这句代码后,仍然出现6楼的提示窗口。 |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/31 11:47:00 -- 应该是save()的问题,因为数据库已经断开了 试试 BeforeShowErrorMessage事件: If e.Message2.indexof("一般性网络错误") > -1 Or e.Message2.indexof("SQL Server 不存在") > -1 Then if vars("select") = false vars("select") = true Dim Result As DialogResult Result = MessageBox.Show("网络不通,点击是将退出,点击(否)继续等待网络正常后再操作!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then vars("nosave") = true Syscmd.Project.Exit(False) Else e.Cancel=True Return End If end if end if BeforeCloseProject事件 if vars("nosave") = true then return
Dim dtt As DataTable = DataTables("登录日志") vars("行")("用户名") = _UserName vars("行")("退出")= "退出系统" vars("行")("退出日期时间")= Date.Now() dtt.save() For Each dt As DataTable In DataTables dt.save Next |
||||
-- 作者:linyunu -- 发布时间:2019/8/2 12:07:00 -- mark |