Ejemplo n.º 1
0
        private void NetworkMonitoring()
        {
            while (true)
            {
                List <NetworkAdapter> adapters = networkMoniter.Refresh();

                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    long uploadSpeed   = 0;
                    long downloadSpeed = 0;

                    int i = 0;
                    for (; i < adapters.Count; i += 1)
                    {
                        uploadSpeed   += adapters[i].UploadSpeed;
                        downloadSpeed += adapters[i].downloadSpeed;

                        if (NetworkCollection.Count <= i)
                        {
                            NetworkCollection.Add(new NetworkModelView(adapters[i]));
                        }
                        else
                        {
                            NetworkCollection[i].Resolve(adapters[i]);
                        }
                    }

                    while (NetworkCollection.Count > i)
                    {
                        NetworkCollection.RemoveAt(i);
                    }

                    speedQueue.Enqueue(uploadSpeed + downloadSpeed);

                    while (speedQueue.Count > 200)
                    {
                        speedQueue.Dequeue();
                    }

                    GlobalUploadSpeed   = NetworkAdapter.GetSpeedString(uploadSpeed);
                    GlobalDownloadSpeed = NetworkAdapter.GetSpeedString(downloadSpeed);

                    Notify(() => GlobalUploadSpeed);
                    Notify(() => GlobalDownloadSpeed);
                    Notify(() => GraphPointCollection);
                }));

                Thread.Sleep(1000);
            }
        }