From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 06 三月 2021 11:35:20 +0800
Subject: [PATCH] 1. 解决软件异常崩溃问题

---
 src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs b/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
index d5fde03..6d62f27 100644
--- a/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
+++ b/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
@@ -2,6 +2,7 @@
 using Bro.Common.Interface;
 using System;
 using System.Reflection;
+using System.Threading;
 using System.Windows.Forms;
 using WeifenLuo.WinFormsUI.Docking;
 
@@ -10,7 +11,7 @@
     public partial class MenuFrmBase : DockContent, IMenuNode, IProcessObserver, ILogOutput
     {
         public Action<string, IProcess> OnUploadProcess { get; set; }
-        public Action<LogMsg> OnLogMsgOutput { get; set; }
+        public event Action<LogMsg> OnLogMsgOutput;
         public string Id { get; set; } = Guid.NewGuid().ToString();
 
         private IProcess process = null;
@@ -23,11 +24,15 @@
                 //if (process != value)
                 {
                     process = value;
+
+                    _constructionDoneHandle.Wait();
                     OnProcessUpdated();
+                    //_constructionDoneHandle.Reset();
                 }
             }
         }
 
+        ManualResetEventSlim _constructionDoneHandle = new ManualResetEventSlim(false);
         public MenuFrmBase()
         {
             InitializeComponent();
@@ -37,6 +42,8 @@
             {
                 FormClosing += MenuFrmBase_FormClosing;
             }
+
+            _constructionDoneHandle.Set();
         }
 
         protected virtual void MenuFrmBase_FormClosing(object sender, FormClosingEventArgs e)
@@ -75,7 +82,7 @@
         #endregion
 
         #region Login
-        protected bool IsLogin { get; set; }
+        protected virtual bool IsLogin { get; set; }
 
         public virtual void SetLoginStatus(bool isLogin)
         {

--
Gitblit v1.8.0