public MonitorIPViewModel(string filePath, IEventAggregator eventAggregator)
        {
            this.eventAggregator = eventAggregator;
            SelectedFilePath     = filePath;
            IpData        = new ObservableCollectionPropertyNotify <IPDataModel>();
            IpAddressList = new List <IPAddress>();
            IpDataGrid    = new DataGrid();
            uiContext     = SynchronizationContext.Current;
            RefreshRateInputVisibility = Visibility.Hidden;
            //sets default refresh rate at 500 ms
            internalRefreshRate = 500;

            //add the ips from IpDataModel to the ipaddr list that is given to the asyncping command
            ParseHTML.ParseIpHTML(IpData, filePath);
            for (int i = 0; i < IpData.Count; i++)
            {
                IpAddressList.Add(IpData[i].Ip);
            }

            RefreshIP = true;

            //~~~~~~~~~~~!!DO NOT CHANGE THIS!!~~~~~~~~~~~~~~~~~~~~~~
            //There is a bug in .NET frameworks 4 and up that causes a PROCCESS_HAS_LOCKED_PAGES  Windows Blue Screen of Death
            //if you have a debugger attached and stop debugging while the ping is in process
            //If you want to test ping functionality you must build/run without debugging (CTRL-F5)
            if (!System.Diagnostics.Debugger.IsAttached)
            {
                StartIpPingThread();
            }
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        }