我的网站拥有超过 600 台设备。我正在尝试使用标准 .NET ping 类对它们一一进行 ping 操作。由于某种原因,该线程正在崩溃 - 几天后它就停止响应。它所做的只是 ping 网络上的设备。我们使用的是 Microsoft Windows Server 2008 R2。 .NET ping 类有问题吗?我似乎也遇到了内存泄漏,我猜这是由于 ping 造成的。我应该只编写一个 win32 ping dll 来为我完成这项工作,还是我在 .NET 上做错了什么?
private void PingDevice(out bool state, string IP)
{
PingReply pingReply;
System.Net.NetworkInformation.Ping pingSender = null;
state = false;
try
{
pingSender = new System.Net.NetworkInformation.Ping();
pingReply = pingSender.Send(IP, 4000);
state = (pingReply.Status == IPStatus.Success); // comms is on/off
}
catch (Exception ex)
{
PingGlobals.driverThread.LogIt("$E Pinging Devices:" + ex.Message + ", " + IP);
}
finally
{
if (pingSender != null)
{
((IDisposable)pingSender).Dispose();
}
}
}
在使用 Ping 的异步版本时,我发现有时 Ping 永远不会返回。我可以想象,如果这种情况发生在异步、同步上,它就会停止。我找到的 Async 的答案是设置一个超时(比 Ping 超时长),然后在 SendAsync 之前调用 SendAsyncCancel 重试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)