关闭应用程序/停止计时器vb.net

时间:2015-01-30 00:47:37

标签: mysql vb.net timer

我的应用程序中有一个计时器运行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

任何解决方案?或者更好的主意,我想。谢谢!

3 个答案:

答案 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()

但是应用程序退出调用将关闭所有正在运行的表单,您需要在关闭之前停止所有计时器。