Sfoglia il codice sorgente

fix 同步tin 之前Recipe 添加事件前先取消上次事件

jiangjy 1 giorno fa
parent
commit
199fb694d4

+ 94 - 18
FrameworkLocal/UIClient/CenterViews/Editors/Recipe/RecipeDataBase.cs

@@ -386,6 +386,17 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in Steps)
             {
+                if (item != null)
+                {
+                    item.TempValueChangedEvent -= Item_TempValueChangedEvent;
+                    item.MFCValueChangedEvent -= Item_MFCValueChangedEvent;
+                    item.ValveValueChangedEvent -= Item_ValveValueChangedEvent;
+                    item.AUXValueChangedEvent -= Item_AUXValueChangedEvent;
+                    item.OhterTempValueChangedEvent -= Item_OhterTempValueChangedEvent;
+                    item.PressureValueChangedEvent -= Item_PressureValueChangedEvent;
+                    item.LoaderValueChangedEvent -= Item_LoaderValueChangedEvent;
+                    item.AlarmValueChangedEvent -= Item_AlarmValueChangedEvent;
+                }
                 item.TempValueChangedEvent += Item_TempValueChangedEvent;
                 item.MFCValueChangedEvent += Item_MFCValueChangedEvent;
                 item.ValveValueChangedEvent += Item_ValveValueChangedEvent;
@@ -415,6 +426,17 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
                 {
                     foreach (Step item in e.NewItems)
                     {
+                        if (item != null)
+                        {
+                            item.TempValueChangedEvent -= Item_TempValueChangedEvent;
+                            item.MFCValueChangedEvent -= Item_MFCValueChangedEvent;
+                            item.ValveValueChangedEvent -= Item_ValveValueChangedEvent;
+                            item.AUXValueChangedEvent -= Item_AUXValueChangedEvent;
+                            item.OhterTempValueChangedEvent -= Item_OhterTempValueChangedEvent;
+                            item.PressureValueChangedEvent -= Item_PressureValueChangedEvent;
+                            item.LoaderValueChangedEvent -= Item_LoaderValueChangedEvent;
+                            item.AlarmValueChangedEvent -= Item_AlarmValueChangedEvent;
+                        }
                         item.TempValueChangedEvent += Item_TempValueChangedEvent;
                         item.MFCValueChangedEvent += Item_MFCValueChangedEvent;
                         item.ValveValueChangedEvent += Item_ValveValueChangedEvent;
@@ -1272,32 +1294,33 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
             //AUXSetsCollectionChanged(step);
 
             Task[] tasks = new Task[4];
-            tasks[0] = Task.Factory.StartNew(() =>
-            {
-                MFCSetsCollectionChanged(step);
-            });
-
-            tasks[1] = Task.Factory.StartNew(() =>
-            {
-                TemperatureSetsCollectionChanged(step);
-            });
-
-            tasks[2] = Task.Factory.StartNew(() =>
+            tasks[0] = Task.Run(() => MFCSetsCollectionChanged(step));
+            tasks[1] = Task.Run(() => TemperatureSetsCollectionChanged(step));
+            tasks[2] = Task.Run(() => ValveSetsCollectionChanged(step));
+            tasks[3] = Task.Run(() => AUXSetsCollectionChanged(step));
+            try
             {
-                ValveSetsCollectionChanged(step);
-            });
-
-            tasks[3] = Task.Factory.StartNew(() =>
+                Task.WaitAll(tasks);
+            }
+            catch (AggregateException ae)
             {
-                AUXSetsCollectionChanged(step);
-            });
-            Task.WaitAll(tasks);
+                LOG.Error("One or more errors occurred during delegate event processing:");
+                foreach (var ex in ae.InnerExceptions)
+                {
+                    LOG.Error($" - {ex.GetType().Name}: {ex.Message}");
+                }
+            }
         }
 
         private void MFCSetsCollectionChanged(Step step)
         {
             foreach (var item in step.MFCSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged -= step.MFCIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= step.Item_MFCValueChangedEvent;
+                }
                 item.PropertyChanged += step.MFCIsSaved_PropertyChanged;
                 item.ValueChangedEvent += step.Item_MFCValueChangedEvent;
             }
@@ -1308,6 +1331,11 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in step.TemperatureSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged -= step.TemperatureIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= step.Item_TempValueChangedEvent;
+                }
                 item.PropertyChanged += step.TemperatureIsSaved_PropertyChanged;
                 item.ValueChangedEvent += step.Item_TempValueChangedEvent;
             }
@@ -1319,6 +1347,11 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in step.ValveSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged += step.ValveIsSaved_PropertyChanged;
+                    item.ValueChangedEvent += step.Item_ValveValueChangedEvent;
+                }
                 item.PropertyChanged += step.ValveIsSaved_PropertyChanged;
                 item.ValueChangedEvent += step.Item_ValveValueChangedEvent;
             }
@@ -1347,6 +1380,12 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in step.AUXSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged -= step.AUXIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= step.Item_AUXValueChangedEvent;
+
+                }
                 item.PropertyChanged += step.AUXIsSaved_PropertyChanged;
                 item.ValueChangedEvent += step.Item_AUXValueChangedEvent;
             }
@@ -3146,6 +3185,13 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in MFCSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged -= MFCIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= Item_MFCValueChangedEvent;
+
+                }
+
                 item.PropertyChanged += MFCIsSaved_PropertyChanged;
                 item.ValueChangedEvent += Item_MFCValueChangedEvent;
             }
@@ -3174,6 +3220,13 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in TemperatureSets)
             {
+
+                if (item != null)
+                {
+                    item.PropertyChanged -= TemperatureIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= Item_TempValueChangedEvent;
+                }
+
                 item.PropertyChanged += TemperatureIsSaved_PropertyChanged;
                 item.ValueChangedEvent += Item_TempValueChangedEvent;
             }
@@ -3202,6 +3255,12 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in ValveSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged -= ValveIsSaved_PropertyChanged;
+                    item.ValueChangedEvent -= Item_ValveValueChangedEvent;
+                }
+
                 item.PropertyChanged += ValveIsSaved_PropertyChanged;
                 item.ValueChangedEvent += Item_ValveValueChangedEvent;
             }
@@ -3219,6 +3278,13 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
                 {
                     foreach (BoolParam item in e.NewItems)
                     {
+
+                        if (item != null)
+                        {
+                            item.PropertyChanged -= ValveIsSaved_PropertyChanged;
+                            item.ValueChangedEvent -= Item_ValveValueChangedEvent;
+                        }
+
                         item.PropertyChanged += ValveIsSaved_PropertyChanged;
                         item.ValueChangedEvent += Item_ValveValueChangedEvent;
                     }
@@ -3231,6 +3297,11 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
         {
             foreach (var item in AUXSets)
             {
+                if (item != null)
+                {
+                    item.PropertyChanged += AUXIsSaved_PropertyChanged;
+                    item.ValueChangedEvent += Item_AUXValueChangedEvent;
+                }
                 item.PropertyChanged += AUXIsSaved_PropertyChanged;
                 item.ValueChangedEvent += Item_AUXValueChangedEvent;
             }
@@ -3248,6 +3319,11 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
                 {
                     foreach (AUXData item in e.NewItems)
                     {
+                        if (item != null)
+                        {
+                            item.PropertyChanged += AUXIsSaved_PropertyChanged;
+                            item.ValueChangedEvent += Item_AUXValueChangedEvent;
+                        }
                         item.PropertyChanged += AUXIsSaved_PropertyChanged;
                         item.ValueChangedEvent += Item_AUXValueChangedEvent;
                     }

+ 5 - 1
Furnace/FurnaceUI/Views/Editors/ELK/RecipeGasPanelSettingViewModel.cs

@@ -1284,6 +1284,10 @@ namespace FurnaceUI.Views.Editors.ELK
 
         public void StepClick(string cmd)
         {
+            if (!DialogBox.Confirm($"Are you sure {cmd}!"))
+            {
+                return;
+            }
             bool isChangedStep = false;
 
             switch (cmd)
@@ -1488,7 +1492,7 @@ namespace FurnaceUI.Views.Editors.ELK
                     setCmd = "BWR";
                     break;
                 case "DPR":
-                     var valveDpr = !ValveDPR.VirtualFeedback;
+                    var valveDpr = !ValveDPR.VirtualFeedback;
                     setValue = valveDpr;
                     InvokeClient.Instance.Service.DoOperation($"{ValveDPR.UniqueName}.{AITValveOperation.GVVirtualTurnValve}", valveDpr);
                     setCmd = "ValveAV93";