From 8cbf4a6b9f334246d88c8101ae3db9a21f1bab3f Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期三, 28 四月 2021 11:40:08 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.Common.Device/DeviceBase/CameraBase.cs | 88 ++++++++++++++++++++++++-------------------- 1 files changed, 48 insertions(+), 40 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/CameraBase.cs b/src/Bro.Common.Device/DeviceBase/CameraBase.cs index 440c7d0..6a5accc 100644 --- a/src/Bro.Common.Device/DeviceBase/CameraBase.cs +++ b/src/Bro.Common.Device/DeviceBase/CameraBase.cs @@ -153,9 +153,9 @@ set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; - _imageSetList.Add(set); + _imageSetList[set.Id] = set; } /// <summary> @@ -175,15 +175,16 @@ #endregion #region 鍥剧墖缂撳瓨/淇濆瓨 - public readonly ConcurrentBag<IImageSet> _imageSetList = new ConcurrentBag<IImageSet>(); + //public readonly ConcurrentBag<IImageSet> _imageSetList = new ConcurrentBag<IImageSet>(); + protected Dictionary<string, IImageSet> _imageSetList = new Dictionary<string, IImageSet>(); public void NewImageSet(IImageSet set) { set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; - _imageSetList.Add(set); + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + _imageSetList[set.Id] = set; } //public virtual async void UpdateFitElements(List<IShapeElement> eleList, string imgSetId) @@ -201,7 +202,7 @@ OnImageUpdated?.Invoke(this, showImage, imgSetId); }); - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -236,7 +237,7 @@ if (eleList.Count > 0) OnElementsUpdated?.BeginInvoke(this, eleList, imgSetId, null, null); - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -300,7 +301,7 @@ { await Task.Run(() => { - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -366,7 +367,7 @@ //private Timer clearImageSetTimer = null; - public void ClearImageSet(IImageSet set) + public virtual void ClearImageSet(IImageSet set) { try { @@ -375,9 +376,10 @@ // && (!set.ImageSaveOption.IsSaveNGImage || set.IsNGSaved)) if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved) { - _imageSetList.TryTake(out set); set.Dispose(); - //LogAsync(DateTime.Now, $"绉婚櫎鍥剧墖淇℃伅锛屽綋鍓嶇紦瀛樻暟閲忥細{_imageSetList.Count}", ""); + + _imageSetList.Remove(set.Id); + LogAsync(DateTime.Now, $"绉婚櫎鍥剧墖淇℃伅锛屽綋鍓嶇紦瀛樻暟閲忥細{_imageSetList.Count}", ""); } //bool flag = false; @@ -395,17 +397,17 @@ } } - public void ClearImageSet(string imgSetId) - { - IImageSet set = _imageSetList.First(u => u.Id == imgSetId); - if (set != null) - ClearImageSet(set); - } + //public void ClearImageSet(string imgSetId) + //{ + // IImageSet set = _imageSetList[imgSetId]; + // if (set != null) + // ClearImageSet(set); + //} - private void ImageSet_OnImageSetTimeout(ImageSet set) - { - ClearImageSet(set); - } + //private void ImageSet_OnImageSetTimeout(ImageSet set) + //{ + // ClearImageSet(set); + //} //private void ClearImageSetPeriodically() //{ @@ -543,7 +545,7 @@ { await Task.Run(() => { - Thread.Sleep(1000); + //Thread.Sleep(1000); int widthIn4 = (int)Math.Ceiling(width / 4.0) * 4; Bitmap bmp = new Bitmap(widthIn4, height, PixelFormat.Format48bppRgb); @@ -783,7 +785,7 @@ [Category("鍥剧墖淇濆瓨")] [Description("鏄惁淇濆瓨鍘熷鍥剧墖")] [DisplayName("淇濆瓨鍘熷鍥剧墖")] - public bool IsSaveOriginImage { get; set; } = true; + public bool IsSaveOriginImage { get; set; } = false; [Category("鍥剧墖淇濆瓨")] [Description("鍥剧墖淇濆瓨鏍煎紡")] @@ -833,7 +835,7 @@ } } - public interface IImageSet : IDisposable + public interface IImageSet:IDisposable { DateTime InitialTime { get; set; } string Id { get; } @@ -847,7 +849,12 @@ bool IsFitSaved { get; set; } bool IsAddtionalSaved { get; set; } - event Action<ImageSet> OnImageSetTimeout; + //event Action<ImageSet> OnImageSetTimeout; + + /// <summary> + /// 搴忓垪鍖栨搷浣滅殑鍥惧儚淇℃伅 + /// </summary> + string ImageData { get; set; } } public class ImageSet : IImageSet @@ -887,29 +894,30 @@ public object SaveLock { get; set; } = new object(); - public event Action<ImageSet> OnImageSetTimeout; - private Timer autoDisposeTimer = null; + public virtual string ImageData { get; set; } - private void OnAutoDispose(object state) - { - OnImageSetTimeout?.Invoke(this); - } + //public event Action<ImageSet> OnImageSetTimeout; + //private Timer autoDisposeTimer = null; - public ImageSet() + public void Dispose(object state) { - autoDisposeTimer = new Timer(OnAutoDispose, null, 10 * 1000, -1); + //OnImageSetTimeout?.Invoke(this); + + //autoDisposeTimer.Change(-1, -1); + //autoDisposeTimer.Dispose(); + + Image?.Dispose(); + Image = null; } public virtual void Dispose() { - autoDisposeTimer.Change(-1, -1); - autoDisposeTimer.Dispose(); + Dispose(null); + } - Image?.Dispose(); - Image = null; - - HImage?.Dispose(); - HImage = null; + public ImageSet() + { + //autoDisposeTimer = new Timer(Dispose, null, 10 * 1000, -1); } #endregion } -- Gitblit v1.8.0