ntminer 5 年之前
父节点
当前提交
2d04cd373e

+ 4 - 2
src/AppViews0/MinerStudio/Views/MinerClientsWindow.xaml.cs

@@ -72,7 +72,10 @@ namespace NTMiner.MinerStudio.Views {
                 // 延迟创建,以加快主界面的启动
                 #region
                 var selectedItem = MinerStudioTabControl.SelectedItem;
-                if (selectedItem == MinerStudioTabItemMessage) {
+                bool isServerMessagesVisible = selectedItem == MinerStudioTabItemMessage;
+                RpcRoot.SetIsServerMessagesVisible(isServerMessagesVisible);
+                // 在SetIsServerMessagesVisible之后执行LoadNewServerMessageCommand,因为如果消息tab页不可见执行LoadNewServerMessageCommand会被忽略。
+                if (isServerMessagesVisible) {
                     if (MinerStudioMessagesContainer.Child == null) {
                         MinerStudioMessagesContainer.Child = new Messages();
                     }
@@ -81,7 +84,6 @@ namespace NTMiner.MinerStudio.Views {
                         VirtualRoot.Execute(new LoadNewServerMessageCommand());
                     }
                 }
-                RpcRoot.SetIsServerMessagesVisible(selectedItem == MinerStudioTabItemMessage);
                 #endregion
             };
             this.MinerClienTabControl.SelectionChanged += (sender, e) => {

+ 24 - 26
src/NTMinerRpcClient/Impl/ServerMessageSet.cs

@@ -14,36 +14,34 @@ namespace NTMiner.Impl {
                 throw new ArgumentNullException(nameof(dbFileFullName));
             }
             _connectionString = $"filename={dbFileFullName}";
-            if (!isServer) {
-                VirtualRoot.AddCmdPath<LoadNewServerMessageCommand>(action: message => {
-                    if (!RpcRoot.IsServerMessagesVisible) {
-                        return;
-                    }
-                    DateTime localTimestamp = VirtualRoot.LocalServerMessageSetTimestamp;
-                    // 如果已知服务器端最新消息的时间戳不比本地已加载的最新消息新就不用加载了
-                    if (message.KnowServerMessageTimestamp <= Timestamp.GetTimestamp(localTimestamp)) {
-                        return;
+            VirtualRoot.AddCmdPath<LoadNewServerMessageCommand>(action: message => {
+                if (!RpcRoot.IsServerMessagesVisible) {
+                    return;
+                }
+                DateTime localTimestamp = VirtualRoot.LocalServerMessageSetTimestamp;
+                // 如果已知服务器端最新消息的时间戳不比本地已加载的最新消息新就不用加载了
+                if (message.KnowServerMessageTimestamp <= Timestamp.GetTimestamp(localTimestamp)) {
+                    return;
+                }
+                RpcRoot.OfficialServer.ServerMessageService.GetServerMessagesAsync(localTimestamp, (response, e) => {
+                    if (response.IsSuccess()) {
+                        if (response.Data.Count > 0) {
+                            ReceiveServerMessage(response.Data);
+                        }
                     }
-                    RpcRoot.OfficialServer.ServerMessageService.GetServerMessagesAsync(localTimestamp, (response, e) => {
-                        if (response.IsSuccess()) {
-                            if (response.Data.Count > 0) {
-                                ReceiveServerMessage(response.Data);
-                            }
+                    else {
+                        if (e != null) {
+                            Logger.ErrorDebugLine(e);
                         }
                         else {
-                            if (e != null) {
-                                Logger.ErrorDebugLine(e);
-                            }
-                            else {
-                                VirtualRoot.Out.ShowError(response.ReadMessage(e), autoHideSeconds: 4);
-                            }
+                            VirtualRoot.Out.ShowError(response.ReadMessage(e), autoHideSeconds: 4);
                         }
-                    });
-                }, location: this.GetType());
-                VirtualRoot.AddCmdPath<ReceiveServerMessageCommand>(action: message => {
-                    ReceiveServerMessage(message.Data);
-                }, location: this.GetType());
-            }
+                    }
+                });
+            }, location: this.GetType());
+            VirtualRoot.AddCmdPath<ReceiveServerMessageCommand>(action: message => {
+                ReceiveServerMessage(message.Data);
+            }, location: this.GetType());
             VirtualRoot.AddCmdPath<AddOrUpdateServerMessageCommand>(action: message => {
                 InitOnece();
                 if (isServer) {