ntminer 6 years ago
parent
commit
81ecaa0f02

+ 1 - 1
src/AppModels/AppContext.partials.ColumnsShowViewModels.cs

@@ -43,7 +43,7 @@ namespace NTMiner {
                         _dicById.Remove(message.Source.GetId());
                         OnPropertyChanged(nameof(List));
                     });
-                foreach (var item in NTMinerRoot.Instance.ColumnsShowSet) {
+                foreach (var item in NTMinerRoot.Instance.ColumnsShowSet.AsEnumerable()) {
                     _dicById.Add(item.GetId(), new ColumnsShowViewModel(item));
                 }
 #if DEBUG

+ 1 - 1
src/AppModels/AppContext.partials.PoolKernelViewModels.cs

@@ -49,7 +49,7 @@ namespace NTMiner {
             }
 
             private void Init() {
-                foreach (IPoolKernel item in NTMinerRoot.Instance.ServerContext.PoolKernelSet) {
+                foreach (IPoolKernel item in NTMinerRoot.Instance.ServerContext.PoolKernelSet.AsEnumerable()) {
                     _dicById.Add(item.GetId(), new PoolKernelViewModel(item));
                 }
             }

+ 1 - 1
src/NTMinerClient/Core/Impl/PoolSet.cs

@@ -108,7 +108,7 @@ namespace NTMiner.Core.Impl {
                         repository.Remove(message.EntityId);
                     }
                     VirtualRoot.RaiseEvent(new PoolRemovedEvent(entity));
-                    Guid[] toRemoves = context.PoolKernelSet.Where(a => a.PoolId == message.EntityId).Select(a => a.GetId()).ToArray();
+                    Guid[] toRemoves = context.PoolKernelSet.AsEnumerable().Where(a => a.PoolId == message.EntityId).Select(a => a.GetId()).ToArray();
                     foreach (Guid poolKernelId in toRemoves) {
                         VirtualRoot.Execute(new RemovePoolKernelCommand(poolKernelId));
                     }

+ 2 - 1
src/NTMinerClient/Core/Kernels/IPoolKernelSet.cs

@@ -2,9 +2,10 @@
 using System.Collections.Generic;
 
 namespace NTMiner.Core.Kernels {
-    public interface IPoolKernelSet : IEnumerable<IPoolKernel> {
+    public interface IPoolKernelSet {
         int Count { get; }
         bool Contains(Guid poolKernelId);
         bool TryGetPoolKernel(Guid poolKernelId, out IPoolKernel poolKernel);
+        IEnumerable<IPoolKernel> AsEnumerable();
     }
 }

+ 1 - 1
src/NTMinerClient/Core/Kernels/Impl/CoinKernelSet.cs

@@ -84,7 +84,7 @@ namespace NTMiner.Core.Kernels.Impl {
                         List<Guid> toRemoves = new List<Guid>();
                         IPool[] pools = context.PoolSet.AsEnumerable().Where(a => a.CoinId == coin.GetId()).ToArray();
                         foreach (IPool pool in pools) {
-                            foreach (PoolKernelData poolKernel in context.PoolKernelSet.Where(a => a.PoolId == pool.GetId() && a.KernelId == entity.KernelId)) {
+                            foreach (PoolKernelData poolKernel in context.PoolKernelSet.AsEnumerable().Where(a => a.PoolId == pool.GetId() && a.KernelId == entity.KernelId)) {
                                 toRemoves.Add(poolKernel.Id);
                             }
                         }

+ 2 - 8
src/NTMinerClient/Core/Kernels/Impl/PoolKernelSet.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 
@@ -110,14 +109,9 @@ namespace NTMiner.Core.Kernels.Impl {
             return r;
         }
 
-        public IEnumerator<IPoolKernel> GetEnumerator() {
+        public IEnumerable<IPoolKernel> AsEnumerable() {
             InitOnece();
-            return _dicById.Values.GetEnumerator();
-        }
-
-        IEnumerator IEnumerable.GetEnumerator() {
-            InitOnece();
-            return _dicById.Values.GetEnumerator();
+            return _dicById.Values;
         }
     }
 }

+ 2 - 1
src/NTMinerClient/Core/MinerServer/IColumnsShowSet.cs

@@ -3,8 +3,9 @@ using System;
 using System.Collections.Generic;
 
 namespace NTMiner.Core.MinerServer {
-    public interface IColumnsShowSet : IEnumerable<IColumnsShow> {
+    public interface IColumnsShowSet {
         bool TryGetColumnsShow(Guid columnsShowId, out IColumnsShow columnsShow);
         bool Contains(Guid columnsShowId);
+        IEnumerable<IColumnsShow> AsEnumerable();
     }
 }

+ 3 - 11
src/NTMinerClient/Core/MinerServer/Impl/ColumnsShowSet.cs

@@ -1,15 +1,12 @@
 using NTMiner.MinerServer;
 using System;
-using System.Collections;
 using System.Collections.Generic;
 
 namespace NTMiner.Core.MinerServer.Impl {
     public class ColumnsShowSet : IColumnsShowSet {
         private readonly Dictionary<Guid, ColumnsShowData> _dicById = new Dictionary<Guid, ColumnsShowData>();
 
-        private readonly INTMinerRoot _root;
-        public ColumnsShowSet(INTMinerRoot root) {
-            _root = root;
+        public ColumnsShowSet() {
             VirtualRoot.BuildCmdPath<AddColumnsShowCommand>(action: (message) => {
                 InitOnece();
                 if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty || message.Input.GetId() == ColumnsShowData.PleaseSelect.Id) {
@@ -116,14 +113,9 @@ namespace NTMiner.Core.MinerServer.Impl {
             return r;
         }
 
-        public IEnumerator<IColumnsShow> GetEnumerator() {
+        public IEnumerable<IColumnsShow> AsEnumerable() {
             InitOnece();
-            return _dicById.Values.GetEnumerator();
-        }
-
-        IEnumerator IEnumerable.GetEnumerator() {
-            InitOnece();
-            return _dicById.Values.GetEnumerator();
+            return _dicById.Values;
         }
     }
 }

+ 2 - 2
src/NTMinerClient/JsonDb/ServerJsonDb.cs

@@ -42,7 +42,7 @@ namespace NTMiner.JsonDb {
             CoinKernels = root.ServerContext.CoinKernelSet.AsEnumerable().Cast<CoinKernelData>().ToList();
             FileWriters = root.ServerContext.FileWriterSet.AsEnumerable().Cast<FileWriterData>().ToList();
             FragmentWriters = root.ServerContext.FragmentWriterSet.AsEnumerable().Cast<FragmentWriterData>().ToList();
-            PoolKernels = root.ServerContext.PoolKernelSet.Cast<PoolKernelData>().Where(a => !string.IsNullOrEmpty(a.Args)).ToList();
+            PoolKernels = root.ServerContext.PoolKernelSet.AsEnumerable().Cast<PoolKernelData>().Where(a => !string.IsNullOrEmpty(a.Args)).ToList();
             Pools = root.ServerContext.PoolSet.AsEnumerable().Cast<PoolData>().ToList();
             SysDicItems = root.ServerContext.SysDicItemSet.AsEnumerable().Cast<SysDicItemData>().ToArray();
             SysDics = root.ServerContext.SysDicSet.AsEnumerable().Cast<SysDicData>().ToArray();
@@ -113,7 +113,7 @@ namespace NTMiner.JsonDb {
             CoinKernels = root.ServerContext.CoinKernelSet.AsEnumerable().Cast<CoinKernelData>().Where(a => localJsonObj.CoinKernelProfiles.Any(b => b.CoinKernelId == a.Id)).ToList();
             FileWriters = root.ServerContext.FileWriterSet.AsEnumerable().Cast<FileWriterData>().ToList();// 这个数据没几条就不精简了
             FragmentWriters = root.ServerContext.FragmentWriterSet.AsEnumerable().Cast<FragmentWriterData>().ToList();// 这个数据没几条就不精简了
-            PoolKernels = root.ServerContext.PoolKernelSet.Cast<PoolKernelData>().Where(a => !string.IsNullOrEmpty(a.Args) && pools.Any(b => b.Id == a.PoolId)).ToList();
+            PoolKernels = root.ServerContext.PoolKernelSet.AsEnumerable().Cast<PoolKernelData>().Where(a => !string.IsNullOrEmpty(a.Args) && pools.Any(b => b.Id == a.PoolId)).ToList();
             SysDicItems = root.ServerContext.SysDicItemSet.AsEnumerable().Cast<SysDicItemData>().ToArray();
             SysDics = root.ServerContext.SysDicSet.AsEnumerable().Cast<SysDicData>().ToArray();
             TimeStamp = NTMinerRoot.ServerJson.TimeStamp;

+ 1 - 1
src/NTMinerClient/NTMinerRoot.cs

@@ -165,7 +165,7 @@ namespace NTMiner {
             this.MinerGroupSet = new MinerGroupSet();
             this.NTMinerWalletSet = new NTMinerWalletSet();
             this.OverClockDataSet = new OverClockDataSet(this);
-            this.ColumnsShowSet = new ColumnsShowSet(this);
+            this.ColumnsShowSet = new ColumnsShowSet();
             this.ServerMessageSet = new ServerMessageSet(VirtualRoot.LocalDbFileFullName, isServer: false);
             // 作业和在群控客户端管理作业时
             IsJsonLocal = isWork || VirtualRoot.IsMinerStudio;

+ 1 - 1
src/NTMinerClient/NTMinerRoot.partials.BuildAssembleArgs.cs

@@ -20,7 +20,7 @@ namespace NTMiner {
             }
             ICoinKernelProfile coinKernelProfile = this.MinerProfile.GetCoinKernelProfile(mainCoinProfile.CoinKernelId);
             string poolKernelArgs = string.Empty;
-            IPoolKernel poolKernel = ServerContext.PoolKernelSet.FirstOrDefault(a => a.PoolId == mainCoinPool.GetId() && a.KernelId == kernel.GetId());
+            IPoolKernel poolKernel = ServerContext.PoolKernelSet.AsEnumerable().FirstOrDefault(a => a.PoolId == mainCoinPool.GetId() && a.KernelId == kernel.GetId());
             if (poolKernel != null) {
                 poolKernelArgs = poolKernel.Args;
             }