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); } } }); }
private void CheckBoxIsAutoFanSpeed_Click(object sender, RoutedEventArgs e) { FrameworkElement checkBox = (FrameworkElement)sender; GpuProfileViewModel gpuProfileVm = (GpuProfileViewModel)checkBox.Tag; VirtualRoot.Execute(new AddOrUpdateGpuProfileCommand(gpuProfileVm)); }
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); }
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; } } }
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 }