using System; using System.Net.NetworkInformation; using System.Threading.Tasks; namespace BITable { public static class Util { public static bool IsPingable(string destinationIPAddress, out long pingTime, int timeOut = 500) { var pingTask = Task.Factory.StartNew(async () => { Ping pinger = new Ping(); try { PingReply reply = await pinger.SendPingAsync(destinationIPAddress, timeOut); return reply; } catch (Exception) { return null; } finally { pinger.Dispose(); } }); var pingResult = pingTask.Result.Result; if (pingResult != null && pingResult.Status == IPStatus.Success) { pingTime = pingResult.RoundtripTime; return true; } else { pingTime = -1; return false; } } } }