如果需要很多时间,请跳到下一次迭代 c#
Skip to the next iteration if it takes to much time c#
我想从 192.168.1.1 ping 到 192.168.1.255
所以我用
FOR(i=1;i<=255;i++)
//each time, I test the IP address by pinging it with the following code
try {
PingReply reply = pinger.Send(AdresaIp);
pingable = reply.Status == IPStatus.Success;
}
catch (PingException)
{
// Discard PingExceptions and return false;
}
我遇到的问题在:
PingReply reply = pinger.Send(AdresaIp);
pingable = reply.Status == IPStatus.Success;
当 ping 成功时,上面的两行执行时间为 2 毫秒,但当它失败时( 会发生多次)大约需要 3 秒, 是巨大的如果我 ping 255 个 IP。
所以我想通过以下方式实现一个定时器:
if (timer > 1 second) continue;
//if it takes more than 1 second for the current iteration jump to the next
迭代。
我尝试了 System.Diagnostics.Stopwatch.StartNew(
) ,但对我不起作用,因为它在测试 ping 后给了我时间。
我需要一些允许我在 ping 测试工作时进行检查的东西,所以当它达到 1 秒时我可以使用 CONTINUE 命令。
谢谢,
弗拉德
您可以直接使用 Ping.Send Method (IPAddress, Int32)
.第二个参数是超时:
timeout
Type: System.Int32
An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.
我想从 192.168.1.1 ping 到 192.168.1.255
所以我用
FOR(i=1;i<=255;i++)
//each time, I test the IP address by pinging it with the following code
try {
PingReply reply = pinger.Send(AdresaIp);
pingable = reply.Status == IPStatus.Success;
}
catch (PingException)
{
// Discard PingExceptions and return false;
}
我遇到的问题在:
PingReply reply = pinger.Send(AdresaIp);
pingable = reply.Status == IPStatus.Success;
当 ping 成功时,上面的两行执行时间为 2 毫秒,但当它失败时( 会发生多次)大约需要 3 秒, 是巨大的如果我 ping 255 个 IP。
所以我想通过以下方式实现一个定时器:
if (timer > 1 second) continue;
//if it takes more than 1 second for the current iteration jump to the next
迭代。
我尝试了 System.Diagnostics.Stopwatch.StartNew(
) ,但对我不起作用,因为它在测试 ping 后给了我时间。
我需要一些允许我在 ping 测试工作时进行检查的东西,所以当它达到 1 秒时我可以使用 CONTINUE 命令。
谢谢,
弗拉德
您可以直接使用 Ping.Send Method (IPAddress, Int32) .第二个参数是超时:
timeout
Type: System.Int32
An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.