From 3c837a3be1548e296d6ed1afb32ebe418b69db25 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 02 四月 2026 13:03:41 +0800
Subject: [PATCH] 优化相机采集队列处理逻辑。

---
 LB_VisionProcesses/Cameras/BaseCamera.cs |   44 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/LB_VisionProcesses/Cameras/BaseCamera.cs b/LB_VisionProcesses/Cameras/BaseCamera.cs
index 4928e18..3c7d0ec 100644
--- a/LB_VisionProcesses/Cameras/BaseCamera.cs
+++ b/LB_VisionProcesses/Cameras/BaseCamera.cs
@@ -1,8 +1,10 @@
 锘縰sing HalconDotNet;
-using MvCameraControl;
+using LB_SmartVisionCommon;
 using LB_VisionProcesses;
 using LB_VisionProcesses.Cameras;
+using MvCameraControl;
 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Drawing;
@@ -36,22 +38,44 @@
         protected Bitmap CallBackImg { get; set; }
         public Bitmap Bitmap;
 
-        private Dictionary<string, List<Bitmap>> _collectedImages;
-        public Dictionary<string, List<Bitmap>> CollectedImages
-        {
-            get => _collectedImages;
-            set
-            {
-                _collectedImages = value;
-            }
-        }
+        //private ConcurrentDictionary<string, ConcurrentQueue<Bitmap>> _collectedImages;
+        public ConcurrentDictionary<string, ConcurrentQueue<Bitmap>> CollectedImages = new ConcurrentDictionary<string, ConcurrentQueue<Bitmap>>();
+        //{
+        //    get => _collectedImages;
+        //    set
+        //    {
+        //        _collectedImages = value;
+        //    }
+        //}
+
+        /// <summary>
+        /// 闃熷垪涓婇檺锛岄槻姝㈠唴瀛樼垎鐐�
+        /// </summary>
+        public int MAX_QUEUE_CAPACITY = 30;
+
         #endregion
 
         #region  operate
+
+        /// <summary>
+        /// 鐩告満閿�姣佹椂锛氭竻绌烘墍鏈夌紦瀛橈紝閲婃斁鍏ㄩ儴鍐呭瓨
+        /// </summary>
+        public virtual void ClearAllImages()
+        {
+            if (CollectedImages.TryRemove(SN, out var queue))
+            {
+                while (queue.TryDequeue(out Bitmap bmp))
+                {
+                    bmp.Dispose();
+                }
+            }
+            AsyncLogHelper.Info($"LBCamera[{SN}]: 宸叉竻绌烘墍鏈夊浘鍍忕紦瀛�");
+        }
         public virtual void Dispose()
         {
             try
             {
+                ClearAllImages();
                 CloseDevice();
             }
             catch { }

--
Gitblit v1.9.3