Je veux faire un ping de 192.168.1.1 à 192.168.1.255Passer à l'itération suivante si elle prend beaucoup de temps à C#
J'utilise
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;
}
Le problème que je rencontre est à:
PingReply reply = pinger.Send(AdresaIp);
pingable = reply.Status == IPStatus.Success;
lorsque le ping réussit les deux lignes d'en haut ont un temps d'exécution de 2 millisecondes, mais quand il échoue (sorcière se produira plusieurs fois), il prend environ 3 secondes, sorcière est énorme si je ping 255 adresses IP.
Je veux mettre en œuvre une minuterie de la manière suivante:
if (timer > 1 second) continue;
//if it takes more than 1 second for the current iteration jump to the next
itération.
J'ai essayé le System.Diagnostics.Stopwatch.StartNew(
), ne fonctionne pas pour moi, car il me donne le temps après que le ping est testé. J'ai besoin de quelque chose qui me permette de vérifier PENDANT que le test Ping fonctionne, donc au moment où il atteint 1 seconde, je peux utiliser la commande CONTINUER.
Merci,
Vlad
Quel est le type de 'pinger'? – mjwills
Ping Pinger = nouveau Ping(); –
Vous pouvez également envisager d'utiliser https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop. – mjwills