private GpuViewModels() { if (WpfUtil.IsInDesignMode) { return; } foreach (var gpu in NTMinerContext.Instance.GpuSet.AsEnumerable()) { _gpuVms.Add(gpu.Index, new GpuViewModel(gpu)); } if (_gpuVms.ContainsKey(NTMinerContext.GpuAllId)) { _gpuAllVm = _gpuVms[NTMinerContext.GpuAllId]; } else { _gpuAllVm = new GpuViewModel(Gpu.GpuAll); } BuildEventPath <EPriceChangedEvent>("电价变更后更新电费显示", LogEnum.DevConsole, path: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.EChargeText)); } GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); }, location: this.GetType()); BuildEventPath <MaxTempChangedEvent>("高温红色阈值变更后更新显卡温度颜色", LogEnum.DevConsole, path: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.TemperatureForeground)); } }, location: this.GetType()); BuildEventPath <PowerAppendChangedEvent>("功耗补偿变更后更新功耗显示", LogEnum.DevConsole, path: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.PowerUsageWText)); } GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); }, location: this.GetType()); BuildEventPath <GpuStateChangedEvent>("显卡状态变更后刷新VM内存", LogEnum.None, path: message => { if (_gpuVms.ContainsKey(message.Source.Index)) { GpuViewModel vm = _gpuVms[message.Source.Index]; vm.Temperature = message.Source.Temperature; vm.MemTemperature = message.Source.MemTemperature; vm.FanSpeed = message.Source.FanSpeed; vm.PowerUsage = message.Source.PowerUsage; vm.CoreClockDelta = message.Source.CoreClockDelta; vm.MemoryClockDelta = message.Source.MemoryClockDelta; vm.CoreClockDeltaMin = message.Source.CoreClockDeltaMin; vm.CoreClockDeltaMax = message.Source.CoreClockDeltaMax; vm.MemoryClockDeltaMin = message.Source.MemoryClockDeltaMin; vm.MemoryClockDeltaMax = message.Source.MemoryClockDeltaMax; vm.CurrentMemoryTimingLevel = message.Source.CurrentMemoryTimingLevel; vm.Cool = message.Source.Cool; vm.CoolMin = message.Source.CoolMin; vm.CoolMax = message.Source.CoolMax; vm.PowerCapacity = message.Source.PowerCapacity; vm.PowerMin = message.Source.PowerMin; vm.PowerMax = message.Source.PowerMax; vm.TempLimit = message.Source.TempLimit; vm.TempLimitDefault = message.Source.TempLimitDefault; vm.TempLimitMax = message.Source.TempLimitMax; vm.TempLimitMin = message.Source.TempLimitMin; vm.CoreVoltage = message.Source.CoreVoltage; vm.MemoryVoltage = message.Source.MemoryVoltage; vm.VoltMin = message.Source.VoltMin; vm.VoltMax = message.Source.VoltMax; vm.VoltDefault = message.Source.VoltDefault; if (_gpuAllVm != null) { _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.TemperatureText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.MemTemperatureText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.FanSpeedText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.PowerUsageWText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoreClockDeltaMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.MemoryClockDeltaMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoreClockDeltaMinMaxMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.MemoryClockDeltaMinMaxMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoolMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.PowerMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.TempLimitMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.EChargeText)); GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); } UpdateMinMax(); } }, location: this.GetType()); }
private GpuViewModels() { #if DEBUG NTStopwatch.Start(); #endif if (WpfUtil.IsInDesignMode) { return; } foreach (var gpu in NTMinerContext.Instance.GpuSet.AsEnumerable()) { _gpuVms.Add(gpu.Index, new GpuViewModel(gpu)); } if (_gpuVms.ContainsKey(NTMinerContext.GpuAllId)) { _gpuAllVm = _gpuVms[NTMinerContext.GpuAllId]; } else { _gpuAllVm = new GpuViewModel(Gpu.GpuAll); } AddEventPath <EPriceChangedEvent>("电价变更后更新电费显示", LogEnum.DevConsole, action: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.EChargeText)); } GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); }, location: this.GetType()); AddEventPath <MaxTempChangedEvent>("高温红色阈值变更后更新显卡温度颜色", LogEnum.DevConsole, action: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.TemperatureForeground)); } }, location: this.GetType()); AddEventPath <PowerAppendChangedEvent>("功耗补偿变更后更新功耗显示", LogEnum.DevConsole, action: message => { foreach (var gpuVm in _gpuVms.Values) { gpuVm.OnPropertyChanged(nameof(GpuViewModel.PowerUsageWText)); } GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); }, location: this.GetType()); AddEventPath <GpuStateChangedEvent>("显卡状态变更后刷新VM内存", LogEnum.None, action: message => { if (_gpuVms.ContainsKey(message.Source.Index)) { GpuViewModel vm = _gpuVms[message.Source.Index]; vm.Temperature = message.Source.Temperature; vm.FanSpeed = message.Source.FanSpeed; vm.PowerUsage = message.Source.PowerUsage; vm.CoreClockDelta = message.Source.CoreClockDelta; vm.MemoryClockDelta = message.Source.MemoryClockDelta; vm.CoreClockDeltaMin = message.Source.CoreClockDeltaMin; vm.CoreClockDeltaMax = message.Source.CoreClockDeltaMax; vm.MemoryClockDeltaMin = message.Source.MemoryClockDeltaMin; vm.MemoryClockDeltaMax = message.Source.MemoryClockDeltaMax; vm.Cool = message.Source.Cool; vm.CoolMin = message.Source.CoolMin; vm.CoolMax = message.Source.CoolMax; vm.PowerCapacity = message.Source.PowerCapacity; vm.PowerMin = message.Source.PowerMin; vm.PowerMax = message.Source.PowerMax; vm.TempLimit = message.Source.TempLimit; vm.TempLimitDefault = message.Source.TempLimitDefault; vm.TempLimitMax = message.Source.TempLimitMax; vm.TempLimitMin = message.Source.TempLimitMin; vm.CoreVoltage = message.Source.CoreVoltage; vm.MemoryVoltage = message.Source.MemoryVoltage; vm.VoltMin = message.Source.VoltMin; vm.VoltMax = message.Source.VoltMax; vm.VoltDefault = message.Source.VoltDefault; if (_gpuAllVm != null) { _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.TemperatureText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.FanSpeedText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.PowerUsageWText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoreClockDeltaMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.MemoryClockDeltaMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoreClockDeltaMinMaxMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.MemoryClockDeltaMinMaxMText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.CoolMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.PowerMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.TempLimitMinMaxText)); _gpuAllVm.OnPropertyChanged(nameof(_gpuAllVm.EChargeText)); GpuSpeedVms.OnPropertyChanged(nameof(GpuSpeedViewModels.ProfitCnyPerDayText)); } UpdateMinMax(); } }, location: this.GetType()); #if DEBUG var elapsedMilliseconds = NTStopwatch.Stop(); if (elapsedMilliseconds.ElapsedMilliseconds > NTStopwatch.ElapsedMilliseconds) { Write.DevTimeSpan($"耗时{elapsedMilliseconds} {this.GetType().Name}.ctor"); } #endif }