Exemplo n.º 1
0
        private void Ping_PingReceived(object sender, PingReceivedArgs e)
        {
            PingInfo pingInfo = PingInfo.Parse(e);

            // Add the result to the collection
            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate()
            {
                lock (PingResult)
                    PingResult.Add(pingInfo);
            }));

            // Calculate statistics
            PingsTransmitted++;

            if (pingInfo.Status == System.Net.NetworkInformation.IPStatus.Success)
            {
                PingsReceived++;

                if (PingsReceived == 1)
                {
                    MinimumTime = pingInfo.Time;
                    MaximumTime = pingInfo.Time;
                }
                else
                {
                    if (MinimumTime > pingInfo.Time)
                    {
                        MinimumTime = pingInfo.Time;
                    }

                    if (MaximumTime < pingInfo.Time)
                    {
                        MaximumTime = pingInfo.Time;
                    }

                    // lock, because the collection is changed from another thread...
                    // I hope this won't slow the application or causes a hight cpu load
                    lock (PingResult)
                        AverageTime = (int)PingResult.Average(s => s.Time);
                }
            }
            else
            {
                PingsLost++;
            }
        }
Exemplo n.º 2
0
        private void Ping_PingReceived(object sender, PingReceivedArgs e)
        {
            PingInfo pingInfo = PingInfo.Parse(e);



            // Add the result to the collection
            PingResult.Add(pingInfo);

            // Calculate statistics
            PingsTransmitted++;

            if (pingInfo.Status == System.Net.NetworkInformation.IPStatus.Success)
            {
                PingsReceived++;

                if (PingsReceived == 1)
                {
                    MinimumTime = pingInfo.Time;
                    MaximumTime = pingInfo.Time;
                }
                else
                {
                    if (MinimumTime > pingInfo.Time)
                    {
                        MinimumTime = pingInfo.Time;
                    }

                    if (MaximumTime < pingInfo.Time)
                    {
                        MaximumTime = pingInfo.Time;
                    }
                }

                // I don't know if this can slow my application if the collection is to large
                AverageTime = (int)PingResult.Average(s => s.Time);
            }
            else
            {
                PingsLost++;
            }
        }