如果花费很多时间c#,请跳到下一次迭代

时间:2017-08-31 10:46:16

标签: c# loops timer ip ping

我想从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之后的时间。 我需要能够检查WHILE ping测试的东西,所以当它达到1秒时我可以使用CONTINUE命令。

谢谢,

维拉德

1 个答案:

答案 0 :(得分:5)

你可以使用Ping.Send Method (IPAddress, Int32) 。第二个参数是超时:

  

超时

     

输入:System.Int32

     

Int32值,指定等待ICMP回送回复消息的最大毫秒数(发送回显消息之后)。