ntminer 6 years ago
parent
commit
cde667e662

+ 2 - 2
src/AppModels/Vms/LocalMessagesViewModel.cs

@@ -67,10 +67,10 @@
             });
             this.Clear = new DelegateCommand(() => {
                 this.ShowDialog(new DialogWindowViewModel(message: "确定清空吗?", title: "确认", onYes: () => {
-                    VirtualRoot.LocalMessages.Clear();
+                    VirtualRoot.Execute(new ClearLocalMessageSetCommand());
                 }));
             });
-            VirtualRoot.BuildEventPath<LocalMessageClearedEvent>("清空挖矿消息集后刷新VM内存", LogEnum.DevConsole,
+            VirtualRoot.BuildEventPath<LocalMessageSetClearedEvent>("清空挖矿消息集后刷新VM内存", LogEnum.DevConsole,
                 action: message => {
                     UIThread.Execute(() => {
                         Init();

+ 0 - 1
src/NTMinerlib/LocalMessage/ILocalMessageSet.cs

@@ -3,6 +3,5 @@ using System.Collections.Generic;
 
 namespace NTMiner.LocalMessage {
     public interface ILocalMessageSet : IEnumerable<ILocalMessage> {
-        void Clear();
     }
 }

+ 9 - 10
src/NTMinerlib/LocalMessage/LocalMessageSet.cs

@@ -39,19 +39,18 @@ namespace NTMiner.LocalMessage {
                 }
                 VirtualRoot.RaiseEvent(new LocalMessageAddedEvent(data, removes));
             });
-        }
-
-        public void Clear() {
-            if (string.IsNullOrEmpty(_connectionString)) {
-                return;
-            }
-            using (LiteDatabase db = new LiteDatabase(_connectionString)) {
+            VirtualRoot.BuildCmdPath<ClearLocalMessageSetCommand>(action: message => {
+                if (string.IsNullOrEmpty(_connectionString)) {
+                    return;
+                }
                 lock (_locker) {
                     _records.Clear();
                 }
-                db.DropCollection(nameof(LocalMessageData));
-            }
-            VirtualRoot.RaiseEvent(new LocalMessageClearedEvent());
+                using (LiteDatabase db = new LiteDatabase(_connectionString)) {
+                    db.DropCollection(nameof(LocalMessageData));
+                }
+                VirtualRoot.RaiseEvent(new LocalMessageSetClearedEvent());
+            });
         }
 
         private bool _isInited = false;

+ 7 - 2
src/NTMinerlib/Messages.cs

@@ -153,9 +153,14 @@ namespace NTMiner {
         public List<ILocalMessage> Removes { get; private set; }
     }
 
+    [MessageType(description: "清空本地消息集")]
+    public class ClearLocalMessageSetCommand : Cmd {
+        public ClearLocalMessageSetCommand() { }
+    }
+
     [MessageType(description: "本地消息集清空后")]
-    public class LocalMessageClearedEvent : EventBase {
-        public LocalMessageClearedEvent() { }
+    public class LocalMessageSetClearedEvent : EventBase {
+        public LocalMessageSetClearedEvent() { }
     }
     #endregion
 

+ 1 - 1
src/UnitTests/LocalMessageTests.cs

@@ -7,7 +7,7 @@ namespace UnitTests {
     public class LocalMessageTests {
         [TestMethod]
         public void BenchmarkTest() {
-            VirtualRoot.LocalMessages.Clear();
+            VirtualRoot.Execute(new ClearLocalMessageSetCommand());
             int times = 2000;
             Assert.IsTrue(times > NTKeyword.LocalMessageSetCapacity);
             string content = "this is a test";