public void SendNextPingRequest(Logging.IBasicLogger logger) { if (ping == null) { ping = new System.Net.NetworkInformation.Ping(); ping.PingCompleted += ping_PingCompleted; } lock (mutex) { pingCompleteEventArgs = null; pingToReplyElapsedTime = TimeSpan.Zero; currentUserToken = Token.SetToNow(); try { ping.SendAsync(IPAddress, responseTimeLimitInMSec, extraData, currentUserToken); } catch (System.Exception ex) { logger.Trace.Emit("{0} (SendAsync) generated unexpected exception: {1}", CurrentMethodName, ex.ToString(ExceptionFormat.TypeAndMessage)); } } }
private void ReleaseToken() { lock (mutex) { Token = currentUserToken; currentUserToken = null; pingCompleteEventArgs = null; } }
void AbortCurrentPingRequest() { lock (mutex) { currentUserToken = null; } try { if (ping != null) { ping.SendAsyncCancel(); } } catch {} Fcns.DisposeOfObject(ref ping); }