Browse Source

升级操作锁

林豪 左 3 years ago
parent
commit
194e9f9f27
2 changed files with 29 additions and 39 deletions
  1. 14 14
      Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs
  2. 15 25
      WCS.Core/EntityEx.cs

+ 14 - 14
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -39,7 +39,7 @@ namespace WCS.Service.Extensions
             try
             {
                 if (ExDevice.Any(v => v == Entity.CODE)) throw new WarnException($"[{Entity.CODE}]--触发并发管控");
-                AddExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
                 act(this);
             }
             catch (DoException ex)
@@ -60,7 +60,7 @@ namespace WCS.Service.Extensions
             }
             finally
             {
-                RemoveExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
             }
         }
 
@@ -273,7 +273,7 @@ namespace WCS.Service.Extensions
             try
             {
                 if (ExDevice.Any(v => v == Entity.CODE)) throw new WarnException($"[{Entity.CODE}]--触发并发管控");
-                AddExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
                 act(this);
             }
             catch (DoException ex)
@@ -294,7 +294,7 @@ namespace WCS.Service.Extensions
             }
             finally
             {
-                RemoveExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
             }
         }
     }
@@ -372,7 +372,7 @@ namespace WCS.Service.Extensions
             try
             {
                 if (ExDevice.Any(v => v == Entity.CODE)) throw new WarnException($"[{Entity.CODE}]--触发并发管控");
-                AddExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
                 act(this);
             }
             catch (DoException ex)
@@ -393,7 +393,7 @@ namespace WCS.Service.Extensions
             }
             finally
             {
-                RemoveExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
             }
         }
 
@@ -620,7 +620,7 @@ namespace WCS.Service.Extensions
             try
             {
                 if (ExDevice.Any(v => v == Entity.CODE)) throw new WarnException($"[{Entity.CODE}]--触发并发管控");
-                AddExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
                 act(this);
             }
             catch (DoException ex)
@@ -641,7 +641,7 @@ namespace WCS.Service.Extensions
             }
             finally
             {
-                RemoveExDevice(Entity.CODE);
+                OperateExDevice(Entity.CODE);
             }
         }
 
@@ -658,29 +658,29 @@ namespace WCS.Service.Extensions
                 {
                     code = "SRM3-SRM4-Out";
                     if (ExDevice.Any(v => v == code)) throw new WarnException($"触发出库并发管控--[{code}]");
-                    AddExDevice(code);
+                    OperateExDevice(code);
                 }
                 if (Entity.CODE == "SRM5" || Entity.CODE == "SRM6")
                 {
                     code = "SRM5-SRM6-Out";
                     if (ExDevice.Any(v => v == code)) throw new WarnException($"触发出库并发管控--[{code}]");
-                    AddExDevice(code);
+                    OperateExDevice(code);
                 }
 
                 if (Entity.CODE == "SRM7" || Entity.CODE == "SRM8")
                 {
                     code = "SRM7-SRM8-Out";
                     if (ExDevice.Any(v => v == code)) throw new WarnException($"触发出库并发管控--[{code}]");
-                    AddExDevice(code);
+                    OperateExDevice(code);
                 }
 
                 act(this);
             }
             finally
             {
-                if (Entity.CODE == "SRM3" || Entity.CODE == "SRM4") RemoveExDevice("SRM3-SRM4-Out");
-                if (Entity.CODE == "SRM5" || Entity.CODE == "SRM6") RemoveExDevice("SRM5-SRM6-Out");
-                if (Entity.CODE == "SRM7" || Entity.CODE == "SRM8") RemoveExDevice("SRM7-SRM8-Out");
+                if (Entity.CODE == "SRM3" || Entity.CODE == "SRM4") OperateExDevice("SRM3-SRM4-Out");
+                if (Entity.CODE == "SRM5" || Entity.CODE == "SRM6") OperateExDevice("SRM5-SRM6-Out");
+                if (Entity.CODE == "SRM7" || Entity.CODE == "SRM8") OperateExDevice("SRM7-SRM8-Out");
             }
         }
 

+ 15 - 25
WCS.Core/EntityEx.cs

@@ -18,37 +18,27 @@ namespace WCS.Core
         public static List<string> ExDevice { get; set; } = new List<string>();
 
         /// <summary>
-        /// 添加
+        /// 操作
         /// </summary>
-        private static readonly object Addobj = new object();
+        private static readonly object Operateobj = new object();
 
         /// <summary>
-        /// 移除锁
-        /// </summary>
-        private static readonly object removeobj = new object();
-
-        /// <summary>
-        /// 添加进行中的设备
+        /// 操作进行种的设备
         /// </summary>
         /// <param name="e"></param>
-        public static void AddExDevice(string e)
+        public static void OperateExDevice(string e)
         {
-            //lock (Addobj)
-            //{
-            ExDevice.Add(e);
-            //}
-        }
-
-        /// <summary>
-        /// 移除进行中的设备
-        /// </summary>
-        /// <param name="e"></param>
-        public static void RemoveExDevice(string e)
-        {
-            //lock (removeobj)
-            //{
-            ExDevice.Remove(e);
-            //}
+            lock (Operateobj)
+            {
+                if (ExDevice.Any(v => v == e))
+                {
+                    ExDevice.Remove(e);
+                }
+                else
+                {
+                    ExDevice.Add(e);
+                }
+            }
         }
 
         public EntityEx(T entity)