【发布时间】:2020-03-24 08:21:25
【问题描述】:
我创建了一个简单的方法来检查我的 Internet 连接是否处于活动状态。不幸的是,由于 System.Net.Ping.dll 中的 System.Net.NetworkInformation.PingException”,try 部分被忽略了。值得注意的是,PingReply 出现了问题。 你能告诉我如何处理这个异常并允许代码正确运行以便执行 try 部分。
我的功能:
private void ConnectionStatusChecker(object source, ElapsedEventArgs e)
{
Ping myPing = new Ping();
String host = "https://www.google.com/";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
Ping ping = new Ping();
try
{
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
if (reply.Status == IPStatus.Success)
ConnectionStatus = "Connected";
else
ConnectionStatus = "Disconnected";
}
catch (System.Net.NetworkInformation.PingException)
{
ConnectionStatus = "Disconnected-Exception";
}
}
编辑:我想在 ConnectionStatus 变量中存储有关我的 Internet 连接的信息。尝试部分描述了在断开或连接的情况下的值。但是 PingException 不允许我检查它 - 异常会自动阻止 try 部分。问题是,如何处理这个异常,我犯的根源或错误在哪里?
【问题讨论】:
-
我不确定我是否理解这个问题。你能再澄清一点吗?
-
我刚刚添加了一个小解释
-
如果
Ping.Send失败并返回System.Net.NetworkInformation.PingException,将触发异常。这不是你想要的吗? -
但是如果我有连接并且谷歌服务器有效,为什么它会失败?
-
@Matheew 检查
PingException是否有InnerException。它可能会告诉你失败的原因。