我的应用程序中有一个计时器运行Sub
。我想在连续3次连接到服务器失败后终止程序。我已经尝试在Application.Exit
之后放置MsgBox
,但它并没有解决我的问题。计时器仍然在MsgBox
显示后运行,我认为Application.Exit
没有执行。
Public Sub Reader(ByVal strsql As String)
Try
cm = New MySqlCommand(strsql, con)
openConnection()
dr = cm.ExecuteReader()
Catch ex As Exception
errorCounter += 1
If errorCounter = 3 Then
MsgBox("Server is down. Application now exiting...", MsgBoxStyle.Critical, "Server down.")
'exit the application.
Else
MsgBox(ex.Message)
End If
End Try
End Sub
任何解决方案?或者更好的主意,我想。谢谢!
答案 0 :(得分:2)
定时器可能很棘手且难以调试,尤其是在间隔非常短的情况下。在你的例子中,我会尝试这样的事情:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
call sub...
End Sub
Public Sub Reader(ByVal strsql As String)
Try
code...
Catch ex As Exception
errorCounter += 1
If errorCounter = 3 Then
MsgBox("Server is down. Application now exiting...", MsgBoxStyle.Critical, "Server down.")
Else
MsgBox(ex.Message)
Timer1.enabled=True
End If
End Try
End Sub
答案 1 :(得分:1)
尝试这样做:
If errorCounter = 3 Then
Timer1.stop()
MsgBox("Server is down. Application now exiting...", MsgBoxStyle.Critical, "Server down.")
End
Else
MsgBox(ex.Message)
End If
如果计数器达到3(根据您的要求),请停止计时器。程序仍在运行的原因是你没有停止计时器。我认为End函数可以完成关闭应用程序的技巧。
修改强> 另外,不要将代码放在Catch上。创建一个代码,用于检查用户是否连接失败,而不是放置Catch。
答案 2 :(得分:1)
当计数达到3时,您需要先停止计时器,然后显示消息,然后按@JStevens所述退出应用程序。如果你有另外一个表格,如你有2个表格,第二个表格是试图连接确保你打电话
Application.Exit()
' Just to force the app to exit add another closing call
Close()
但是应用程序退出调用将关闭所有正在运行的表单,您需要在关闭之前停止所有计时器。