예제 #1
0
            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));
                    }
                }
            }
예제 #2
0
 private void ReleaseToken()
 {
     lock (mutex)
     {
         Token                 = currentUserToken;
         currentUserToken      = null;
         pingCompleteEventArgs = null;
     }
 }
예제 #3
0
            void AbortCurrentPingRequest()
            {
                lock (mutex)
                {
                    currentUserToken = null;
                }

                try
                {
                    if (ping != null)
                    {
                        ping.SendAsyncCancel();
                    }
                }
                catch
                {}

                Fcns.DisposeOfObject(ref ping);
            }