public MainViewmodel() { ConfigError = Config.Instance.Error; ReloadCommand = new RelayCommand(Reload); EscapeCommand = new RelayCommand(EscapePressed); ResetPingsCommand = new RelayCommand(ResetPings); Devices = new BindingList <DeviceModel>(); GraphItems = new BindingList <GraphItem>(); BindingOperations.EnableCollectionSynchronization(Devices, _syncLock); BindingOperations.EnableCollectionSynchronization(GraphItems, _syncLock); StartWithWindows = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true).GetValue("MillenniumTools") != null; _workers = new List <WorkerModel>(); var router = new Router(Config.Instance.RouterIP); var routerModel = getDevice(Config.Instance.RouterIP); RestartRouterCommand = new RelayCommand(() => router.RestartModem(), () => routerModel.IsAuthenticated == true); _workers.Add(new WorkerModel { Worker = getRouterWorker(router, Config.Instance.RouterUsername, Config.Instance.RouterPassword), Device = router }); foreach (var ip in Config.Instance.ExtenderIPs) { var extender = new Extender(ip); _workers.Add(new WorkerModel { Worker = getExtenderWorker(extender, Config.Instance.ExtenderUsername, Config.Instance.ExtenderPassword), Device = extender }); } foreach (var ip in Config.Instance.ReferenceIPs) { var reference = new ReferenceDevice(ip); _workers.Add(new WorkerModel { Worker = getReferenceWorker(reference), Device = reference }); } _reloadTimer = new Timer { AutoReset = true, Enabled = false, Interval = Config.Instance.ReloadInterval.TotalMilliseconds }; _reloadTimer.Elapsed += (s, e) => Reload(); Reload(); _reloadTimer.Start(); _pingTimer = new Timer { AutoReset = true, Enabled = false, Interval = Config.Instance.PingInterval.TotalMilliseconds }; _pingTimer.Elapsed += (s, e) => DoPing(); _pingTimer.Start(); }
private BackgroundWorker getReferenceWorker(ReferenceDevice referenceDevice) { var bw = new BackgroundWorker(); bw.DoWork += (s, e) => { var device = getDevice(referenceDevice.IP); device.RebootCommand = null; device.DoReboot = null; device.IsLoading = true; device.IsNetworkAccessible = referenceDevice.IsNetworkAccessible(); var state = referenceDevice.GetState(); device.IsHttpAccessible = state.Accessible; device.IsAuthenticated = null; device.IsActive = null; device.IsLoading = false; device.CouldNotDetermineIp = referenceDevice.CouldNotDetermineIp; }; bw.RunWorkerCompleted += (s, e) => { OnPropertyChanged("Devices"); }; return(bw); }