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());
 }
Beispiel #2
0
            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
            }