From eafdcc5ad6a55d3dfdec6c4787c3f3a9f32efc7f Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期二, 29 九月 2020 13:27:50 +0800
Subject: [PATCH] 1. M071B机台配置 2. GTS板卡添加回原点捕获模式和输入信号模式 3. CameraBase使用Dictionary类型做图片缓存 4. M071流程显式Copy,原来是为了避免内存泄漏,但目前来看不是这方面原因 5. Gocator驱动添加GoDataSet之类KObject资源显式回收,怀疑其中也有非托管对象资源,测试确实起到内存回收作用

---
 src/Bro.Device.Gocator/GocatorDriver.cs |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/src/Bro.Device.Gocator/GocatorDriver.cs b/src/Bro.Device.Gocator/GocatorDriver.cs
index ae21a3f..15f801a 100644
--- a/src/Bro.Device.Gocator/GocatorDriver.cs
+++ b/src/Bro.Device.Gocator/GocatorDriver.cs
@@ -66,6 +66,8 @@
             }
 
             HandleGoData(dataSet);
+
+            dataSet.Dispose();
         }
 
         private void HandleGoData(GoDataSet dataSet, GoImageSet imgSet = null)
@@ -181,6 +183,8 @@
                         //    }
                         //    break;
                 }
+
+                dataObj.Dispose();
             }
         }
 
@@ -238,6 +242,9 @@
             }
 
             HandleGoData(dataSet, imgSet);
+
+            dataSet.Dispose();
+
             if (imgSet.HImage == null)
             {
                 LogAsync(DateTime.Now, $"{Name}鏈兘鑾峰彇HImage鍥惧儚", "");
@@ -412,6 +419,8 @@
                     _snapHandle.Set();
                 }
             }
+
+            dataSet.Dispose();
         }
 
         #region 閲嶅啓鍥剧墖淇濆瓨鎿嶄綔
@@ -422,7 +431,7 @@
                  OnImageUpdated?.Invoke(this, showImage, imgSetId);
              });
 
-            GoImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId) as GoImageSet;
+            GoImageSet set = _imageSetList[imgSetId] as GoImageSet;
 
             if (set == null)
                 return;
@@ -463,7 +472,7 @@
         {
             await Task.Run(() =>
             {
-                GoImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId) as GoImageSet;
+                GoImageSet set = _imageSetList[imgSetId] as GoImageSet;
                 if (set == null)
                     return;
 
@@ -493,19 +502,22 @@
                 }
             });
         }
+
+        public override void ClearImageSet(IImageSet set)
+        {
+            if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved)
+            {
+                (set as GoImageSet).HImage_2?.Dispose();
+                (set as GoImageSet).HImage_2 = null;
+            }
+
+            base.ClearImageSet(set);
+        }
         #endregion
     }
 
     public class GoImageSet : ImageSet
     {
         public HImage HImage_2 { get; set; }
-
-        public override void Dispose()
-        {
-            base.Dispose();
-
-            HImage_2?.Dispose();
-            HImage_2 = null;
-        }
     }
 }

--
Gitblit v1.8.0