private GpuProfileViewModels()
 {
     if (WpfUtil.IsInDesignMode)
     {
         return;
     }
     VirtualRoot.BuildEventPath <GpuProfileSetRefreshedEvent>("刷新附着在当前币种上的超频数据", LogEnum.DevConsole, location: this.GetType(), PathPriority.Normal,
                                                              path: message => {
         lock (_locker) {
             _listByCoinId.Clear();
             _gpuAllVmDicByCoinId.Clear();
         }
         var coinVm = MinerProfileVm.CoinVm;
         if (coinVm != null)
         {
             coinVm.OnOverClockPropertiesChanges();
         }
     });
     BuildEventPath <GpuProfileAddedOrUpdatedEvent>("刷新VM内存", LogEnum.DevConsole, location: this.GetType(), PathPriority.Normal,
                                                    path: message => {
         lock (_locker) {
             if (_listByCoinId.TryGetValue(message.Source.CoinId, out List <GpuProfileViewModel> list))
             {
                 var vm = list.FirstOrDefault(a => a.Index == message.Source.Index);
                 if (vm != null)
                 {
                     vm.Update(message.Source);
                 }
                 else
                 {
                     if (GpuVms.TryGetGpuVm(message.Source.Index, out GpuViewModel gpuVm))
                     {
                         var item = new GpuProfileViewModel(message.Source, gpuVm);
                         list.Add(item);
                         list.Sort(new CompareByGpuIndex());
                         if (item.Index == NTMinerContext.GpuAllId)
                         {
                             _gpuAllVmDicByCoinId.Add(message.Source.CoinId, item);
                         }
                     }
                 }
             }
             else
             {
                 list = new List <GpuProfileViewModel>();
                 if (GpuVms.TryGetGpuVm(message.Source.Index, out GpuViewModel gpuVm))
                 {
                     var item = new GpuProfileViewModel(message.Source, gpuVm);
                     list.Add(item);
                     list.Sort(new CompareByGpuIndex());
                     if (item.Index == NTMinerContext.GpuAllId)
                     {
                         _gpuAllVmDicByCoinId.Add(message.Source.CoinId, item);
                     }
                 }
                 _listByCoinId.Add(message.Source.CoinId, list);
             }
         }
     });
 }
Пример #2
0
        private void CheckBoxIsAutoFanSpeed_Click(object sender, RoutedEventArgs e)
        {
            FrameworkElement    checkBox     = (FrameworkElement)sender;
            GpuProfileViewModel gpuProfileVm = (GpuProfileViewModel)checkBox.Tag;

            VirtualRoot.Execute(new AddOrUpdateGpuProfileCommand(gpuProfileVm));
        }
Пример #3
0
 public List <GpuProfileViewModel> List(Guid coinId)
 {
     if (!_listByCoinId.TryGetValue(coinId, out List <GpuProfileViewModel> list))
     {
         lock (_locker) {
             if (!_listByCoinId.TryGetValue(coinId, out list))
             {
                 list = new List <GpuProfileViewModel>();
                 foreach (var gpu in AppContext.Instance.GpuVms.Items)
                 {
                     GpuProfileViewModel gpuProfileVm = GetGpuProfileVm(coinId, gpu);
                     list.Add(gpuProfileVm);
                 }
                 list.Sort(new CompareByGpuIndex());
                 _listByCoinId.Add(coinId, list);
             }
         }
     }
     return(list);
 }
Пример #4
0
        public void SetData(GpuProfilesJsonDb data)
        {
            _data = data;
            if (data != null)
            {
                string  iconName;
                GpuType gpuType = _minerClientVm.GpuType;
                if (gpuType == GpuType.Empty)
                {
                    gpuType = data.GpuType;
                }
                IsEnabled = data.Gpus != null && data.Gpus.Length != 0;
                RedText   = "超频有风险,操作需谨慎";
                switch (_minerClientVm.GpuType)
                {
                case GpuType.NVIDIA:
                    iconName    = "Icon_Nvidia";
                    GpuIconFill = "Red";
                    break;

                case GpuType.AMD:
                    iconName    = "Icon_Amd";
                    GpuIconFill = "Green";
                    break;

                case GpuType.Empty:
                default:
                    iconName    = "Icon_GpuEmpty";
                    GpuIconFill = "Gray";
                    break;
                }
                GpuIcon = AppUtil.GetResource <Geometry>(iconName);
                foreach (var coinVm in AppRoot.CoinVms.MainCoins)
                {
                    var coinOverClock = data.CoinOverClocks.FirstOrDefault(a => a.CoinId == coinVm.Id);
                    var gpuProfiles   = data.GpuProfiles.Where(a => a.CoinId == coinVm.Id).ToArray();
                    if (coinOverClock == null)
                    {
                        coinOverClock = new CoinOverClockData()
                        {
                            CoinId             = coinVm.Id,
                            IsOverClockEnabled = false,
                            IsOverClockGpuAll  = true
                        };
                    }
                    coinVm.IsOverClockEnabled = coinOverClock.IsOverClockEnabled;
                    coinVm.IsOverClockGpuAll  = coinOverClock.IsOverClockGpuAll;
                    List <GpuProfileViewModel> gpuProfileVms   = new List <GpuProfileViewModel>();
                    GpuProfileViewModel        gpuAllProfileVm = null;
                    #region
                    foreach (var gpu in data.Gpus.OrderBy(a => a.Index))
                    {
                        var gpuProfile = gpuProfiles.FirstOrDefault(a => a.Index == gpu.Index);
                        if (gpuProfile == null)
                        {
                            gpuProfile = new GpuProfileData(coinVm.Id, gpu.Index);
                        }
                        var gpuVm = new GpuViewModel(gpu, data.Gpus);
                        if (gpu.Index == NTMinerContext.GpuAllId)
                        {
                            gpuAllProfileVm = new GpuProfileViewModel(gpuProfile, gpuVm);
                        }
                        else
                        {
                            gpuProfileVms.Add(new GpuProfileViewModel(gpuProfile, gpuVm));
                        }
                    }
                    if (gpuAllProfileVm == null)
                    {
                        gpuAllProfileVm = new GpuProfileViewModel(
                            new GpuProfileData(coinVm.Id, NTMinerContext.GpuAllId), new GpuViewModel(new GpuData {
                            GpuType = gpuType,
                            Index   = NTMinerContext.GpuAllId,
                            Name    = "All"
                        }, data.Gpus));
                    }
                    #endregion
                    coinVm.GpuAllProfileVm = gpuAllProfileVm;
                    coinVm.GpuProfileVms   = gpuProfileVms;
                }
            }
        }
Пример #5
0
            private GpuProfileViewModels()
            {
#if DEBUG
                Write.Stopwatch.Start();
#endif
                VirtualRoot.BuildEventPath <GpuProfileSetRefreshedEvent>("Gpu超频集合刷新后刷新附着在当前币种上的超频数据", LogEnum.DevConsole,
                                                                         action: message => {
                    lock (_locker) {
                        _listByCoinId.Clear();
                        _gpuAllVmDicByCoinId.Clear();
                    }
                    var coinVm = AppContext.Instance.MinerProfileVm.CoinVm;
                    if (coinVm != null)
                    {
                        coinVm.OnOverClockPropertiesChanges();
                        VirtualRoot.Execute(new CoinOverClockCommand(coinVm.Id));
                    }
                });
                BuildEventPath <GpuProfileAddedOrUpdatedEvent>("添加或更新了Gpu超频数据后刷新VM内存", LogEnum.DevConsole,
                                                               action: message => {
                    lock (_locker) {
                        if (_listByCoinId.TryGetValue(message.Source.CoinId, out List <GpuProfileViewModel> list))
                        {
                            var vm = list.FirstOrDefault(a => a.Index == message.Source.Index);
                            if (vm != null)
                            {
                                vm.Update(message.Source);
                            }
                            else
                            {
                                if (AppContext.Instance.GpuVms.TryGetGpuVm(message.Source.Index, out GpuViewModel gpuVm))
                                {
                                    var item = new GpuProfileViewModel(message.Source, gpuVm);
                                    list.Add(item);
                                    list.Sort(new CompareByGpuIndex());
                                    if (item.Index == NTMinerRoot.GpuAllId)
                                    {
                                        _gpuAllVmDicByCoinId.Add(message.Source.CoinId, item);
                                    }
                                }
                            }
                        }
                        else
                        {
                            list = new List <GpuProfileViewModel>();
                            if (AppContext.Instance.GpuVms.TryGetGpuVm(message.Source.Index, out GpuViewModel gpuVm))
                            {
                                var item = new GpuProfileViewModel(message.Source, gpuVm);
                                list.Add(item);
                                list.Sort(new CompareByGpuIndex());
                                if (item.Index == NTMinerRoot.GpuAllId)
                                {
                                    _gpuAllVmDicByCoinId.Add(message.Source.CoinId, item);
                                }
                            }
                            _listByCoinId.Add(message.Source.CoinId, list);
                        }
                    }
                });
#if DEBUG
                var elapsedMilliseconds = Write.Stopwatch.Stop();
                if (elapsedMilliseconds.ElapsedMilliseconds > NTStopwatch.ElapsedMilliseconds)
                {
                    Write.DevTimeSpan($"耗时{elapsedMilliseconds} {this.GetType().Name}.ctor");
                }
#endif
            }