Jelajahi Sumber

修复延迟保存图片的问题

KWD 5 bulan lalu
induk
melakukan
a23fe9c8ed
1 mengubah file dengan 9 tambahan dan 23 penghapusan
  1. 9 23
      TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

+ 9 - 23
TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

@@ -36,11 +36,11 @@ namespace TeamAAS_VP.Views.Home
         private readonly ISystemDatabaseService _systemDatabaseService;
         private readonly IProductService _productService;
 
-        private List<DelaySaveImage> delaySaveImages = new List<DelaySaveImage>();
+        private List<DelaySaveImage> delaySaveImages { get; set; } = new List<DelaySaveImage>();
 
         // ======================= 【新增】保存任务控制:防闪退/防资源泄露 =======================
         private CancellationTokenSource _saveImageCts = new CancellationTokenSource();
-        private readonly SemaphoreSlim _saveSemaphore = new SemaphoreSlim(2, 2);
+        private readonly SemaphoreSlim _saveSemaphore = new SemaphoreSlim(5, 5);
 
         public ShowVisionRender()
         {
@@ -309,7 +309,7 @@ namespace TeamAAS_VP.Views.Home
                         await _saveSemaphore.WaitAsync(token);
                         try
                         {
-                            token.ThrowIfCancellationRequested();
+                            //token.ThrowIfCancellationRequested();
 
                             if (render.IsDelaySaveImage)// 延迟保存(适合你那边后续有处理的场景)
                             {
@@ -336,6 +336,7 @@ namespace TeamAAS_VP.Views.Home
                                     _saveSemaphore.Release();
                                     return;
                                 }
+                                LogHelper.WriteLogInfo("延时图片存入");
                                 SaveImage(
                                     render.SaveImageModel,
                                     render.SaveImagePathModel,
@@ -348,10 +349,6 @@ namespace TeamAAS_VP.Views.Home
                                 );
                             }
                         }
-                        catch (OperationCanceledException)
-                        {
-                            // 取消属于正常情况,不记录
-                        }
                         catch (Exception ex)
                         {
                             LogHelper.WriteLogError("后台保存图像任务出错!", ex);
@@ -364,13 +361,8 @@ namespace TeamAAS_VP.Views.Home
                         }
                     }, token);
                 }
-                catch (OperationCanceledException)
-                {
-                    //try { clonedBitmap?.Dispose(); } catch { }
-                }
                 catch (Exception ex)
                 {
-                    //try { clonedBitmap?.Dispose(); } catch { }
                     LogHelper.WriteLogError("RequestSaveImage(UI截图阶段) 出错!", ex);
                 }
             }));
@@ -396,6 +388,7 @@ namespace TeamAAS_VP.Views.Home
                         try { item.clonedBitmap?.Dispose(); } catch { }
                         break;
                     }
+                    LogHelper.WriteLogInfo("保存延时储存图片");
                     SaveImage(
                         item.SaveImageModel,
                         item.SaveImagePathModel,
@@ -411,11 +404,7 @@ namespace TeamAAS_VP.Views.Home
                 {
                     LogHelper.WriteLogError("UpdateDelaySaveImage 保存图像时出错!", ex);
                 }
-                finally
-                {
-                    // 保存后���放资源
-                    try { item.clonedBitmap?.Dispose(); } catch { }
-                }
+
             }
             delaySaveImages.Clear();
         }
@@ -477,11 +466,8 @@ namespace TeamAAS_VP.Views.Home
 
                             // 产品SN(过滤非法字符)
                             string productSN = _productService.CurrentProductCode;
-                            if (!string.IsNullOrEmpty(productSN))
-                            {
-                                foreach (char c in Path.GetInvalidFileNameChars())
-                                    productSN = productSN.Replace(c, '_');
-                            }
+                            foreach (char c in Path.GetInvalidFileNameChars())
+                                productSN = productSN.Replace(c, '_');
 
                             string resultStr = result ? "OK" : "NG";
                             Originalpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";
@@ -596,7 +582,7 @@ namespace TeamAAS_VP.Views.Home
                                 formulaName = formulaName.Replace(c, '_');
 
                             string productSN = _productService.CurrentProductCode;
-                            if (string.IsNullOrEmpty(productSN))
+                            if (!string.IsNullOrEmpty(productSN))
                             {
                                 foreach (char c in Path.GetInvalidFileNameChars())
                                     productSN = productSN.Replace(c, '_');