Vb.net 防止因缺少internet连接而出现异常
我有一个简单的Windows窗体应用程序。我使用了一个计时器,在计时器间隔内,我检查在线数据库中的值,并在表单上更新它Vb.net 防止因缺少internet连接而出现异常,vb.net,winforms,ado.net,Vb.net,Winforms,Ado.net,我有一个简单的Windows窗体应用程序。我使用了一个计时器,在计时器间隔内,我检查在线数据库中的值,并在表单上更新它 Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick Try String ConnectionString = globalConnString Dim SQL As String =
Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
Try
String ConnectionString = globalConnString
Dim SQL As String = "SELECT AnnouncementID, AnnoucementText FROM tblAnnouncements"
Dim conn As SqlConnection = New SqlConnection(ConnectionString)
conn.Open()
Dim adapter As SqlDataAdapter = New SqlDataAdapter(SQL, conn)
Dim ds As DataSet = New DataSet("Announcements")
adapter.Fill(ds)
UpdateForm(ds)
Catch ex As Exception
LogError("Timer_Tick", ex)
End Try
End Sub
现在,有时互联网是断开或有非常缓慢的互联网。为此,我创建了一个函数,如下所示
Public Function CheckInternetConnection() As Boolean
Try
If My.Computer.Network.IsAvailable = True Then
Return My.Computer.Network.Ping("8.8.8.8")
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
此函数正在ping google公共DNS,但在我的应用程序中,这是我的数据库服务器的IP地址。我已经将该功能包装在CheckInternetConnection中的Timer_Tick中,这样当只有internet连接时,才会执行数据库操作
现在我面临的问题是,当我使用两种不同的wifi连接切换互联网时,以及当我打开和关闭互联网时,代码很少被破坏,并且为line adapter.Fillds创建异常。我的猜测是,这是因为在功能开始时,互联网连接可用,并且通过了互联网检查的条件。当程序开始执行数据库操作时,此时internet很少消失,所以程序引发异常
我给出的例子是一个函数,实际的应用程序非常大,很久以前就已经编写好了,我必须在相同的代码中解决连接问题。在没有互联网连接的情况下,我如何证明没有数据库代码可以访问 使用循环尝试多次。例如
int numTries = 3;
while (numTries > 0) {
numTries--;
try {
// open connection, fill
// your code
break; // got here means success
} catch {
if (numTries == 0)
throw; // propagate exception to next level
Thread.Sleep(500); // optional sleep
}
}
我认为在任何情况下都无法摆脱异常处理程序。当应用程序无法控制的情况发生时(如连接中断),除了处理可能的异常外,您别无选择。这并不是说它们被称为异常。@史蒂夫,是的,你在某种程度上是对的,但作为一名程序员,我想对这一点进行所有可能的检查。我只是不想在没有互联网连接的情况下执行代码。如果在所有的解决方案之后它仍然中断,那么是的,将会有异常处理程序。我想到了同样的方法,并且正在实现同样的方法。很高兴认识像我这样思考的人。将等待更多选项,然后再选择它作为答案。谢谢你的回答。