2016-09-08 55 views
2

我正在嘗試ping代理,並且在繼續執行我的代碼之前,響應時間需要多長時間才能ping,但是我的秒錶太快了。我在哪裏錯了?C#如何等待代理ping?

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-600ms,我期待6000ish – user6793946

回答

1

的問題是,TimeSpan.Milliseconds實際上是毫秒數自上次完全經過第二,沒有過去毫秒的總數。即如果東西運行1500毫秒,則Milliseconds屬性將返回500,而不是1500.您需要使用stopWatch.Elapsed.TotalMilliseconds代替,順便說一下是double,而不是int

+0

就是這樣,你美麗美麗的男人。 – user6793946