2016-09-08 6 views
2

Я пытаюсь выполнить ping прокси-сервер и время, когда требуется ответ, чтобы получить пинг, прежде чем продолжить мой код, однако мой секундомер слишком быстр. Где я здесь не так?C# как ждать прокси-сервера?

private async void idunno() 
    { 
     Stopwatch stopWatch = new Stopwatch(); 
     stopWatch.Start(); 


     var x = await CanPing2(); 
     Console.WriteLine("is proxy alvie: " + x); 
     stopWatch.Stop(); 

     int ts = stopWatch.Elapsed.Milliseconds; 

     Console.WriteLine("RunTime " + ts); 



     Console.WriteLine("RunTime " + ts2); 
    } 
    public async Task<bool> CanPing2() 
    { 

     string ip = "170.130.59.107"; 
     Console.WriteLine(ip); 
     Ping ping = new Ping(); 

     try 
     { 
      PingReply reply = await ping.SendPingAsync(ip, 6000); 
      if (reply == null) return false; 
      Console.WriteLine("cp2 is alive: " + IPStatus.Success); 
      return (reply.Status == IPStatus.Success); 
     } 
     catch (PingException e) 
     { 
      Console.WriteLine("cp2: ex: " + IPStatus.Success); 
      return false; 
     } 

    } 
+0

Какое время вы получаете прямо сейчас и что вы ожидаете? – arbitrarystringofletters

+0

Я получаю 2-600 мс, я ожидаю 6000ish – user6793946

ответ

1

Проблема заключается в том, что на самом деле TimeSpan.Milliseconds количество миллисекунд, прошедших с последнего полностью прошло второе, а не общее количество истекших миллисекунд. т. е. если что-то работает в течение 1500 миллисекунд, тогда свойство Milliseconds вернет 500, а не 1500. Вместо этого вам нужно использовать stopWatch.Elapsed.TotalMilliseconds, что, кстати, является double, а не int.

+0

Вот и все, вы красивый красивый мужчина. – user6793946