AppContext.partials.CoinSnapshotDataViewModels.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using NTMiner.Vms;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace NTMiner {
  6. public partial class AppContext {
  7. public class CoinSnapshotDataViewModels : ViewModelBase {
  8. public static readonly CoinSnapshotDataViewModels Instance = new CoinSnapshotDataViewModels();
  9. private readonly Dictionary<string, CoinSnapshotDataViewModel> _dicByCoinCode = new Dictionary<string, CoinSnapshotDataViewModel>(StringComparer.OrdinalIgnoreCase);
  10. private CoinSnapshotDataViewModels() {
  11. #if DEBUG
  12. Write.Stopwatch.Start();
  13. #endif
  14. foreach (var coinVm in AppContext.Instance.CoinVms.AllCoins) {
  15. _dicByCoinCode.Add(coinVm.Code, new CoinSnapshotDataViewModel(new MinerServer.CoinSnapshotData {
  16. CoinCode = coinVm.Code,
  17. MainCoinMiningCount = 0,
  18. MainCoinOnlineCount = 0,
  19. DualCoinMiningCount = 0,
  20. DualCoinOnlineCount = 0,
  21. ShareDelta = 0,
  22. RejectShareDelta = 0,
  23. Speed = 0,
  24. Timestamp = DateTime.MinValue
  25. }));
  26. }
  27. #if DEBUG
  28. var elapsedMilliseconds = Write.Stopwatch.Stop();
  29. Write.DevTimeSpan($"耗时{elapsedMilliseconds} {this.GetType().Name}.ctor");
  30. #endif
  31. }
  32. public bool TryGetSnapshotDataVm(string coinCode, out CoinSnapshotDataViewModel vm) {
  33. return _dicByCoinCode.TryGetValue(coinCode, out vm);
  34. }
  35. public List<CoinSnapshotDataViewModel> CoinSnapshotDataVms {
  36. get {
  37. return _dicByCoinCode.Values.ToList();
  38. }
  39. }
  40. }
  41. }
  42. }