我有一个小功能,可以将一系列ping发送到指定的主机,以便在执行其他操作之前确定设备是否在线。
面临的问题是Ping.Send
的超时参数被忽略,并且无论超时指定了什么int,它花费相同的时间才能失败。
我尝试将超时从1000更改为仅10,但一次ping失败/超时仍需要20秒左右。
public static bool MultiOnlinePingCheck(string _hostDevice)
{
for (int i = 0; i < 10; i++)
{
Ping SinglePing = new Ping();
try
{
PingReply PR = null;
PR = SinglePing.Send($"{_hostDevice}", 1000);
if (PR.Status == IPStatus.Success)
{
SinglePing.Dispose();
return true;
}
}
catch (Exception err)
{
// No response - try again
SinglePing.Dispose();
}
}
return false;
}
我可以确认要在其上进行测试的主机是域中不存在的设备(并且很可能已经有一段时间了),因此无法解析主机名,但是我仍然希望这个时间正确退出?