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.M071.Process/M071Process.cs | 42 +++++++++++++++++++++++++++--------------- 1 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 155f253..a382503 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -207,10 +207,18 @@ MachineState = MachineState.Running; OnMeasureStart?.Invoke(); - var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone(); - measurements.ForEach(m => + //var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone(); + //measurements.ForEach(m => + //{ + // m.InitialKeyUnitMeasureChanged(); + //}); + + List<MeasurementUnit> measurements = new List<MeasurementUnit>(); + Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().ForEach(u => { + var m = u.Copy(); m.InitialKeyUnitMeasureChanged(); + measurements.Add(m); }); var pMeasure = new ProductionMeasurement() @@ -219,6 +227,8 @@ Measurements = measurements, StartTime = DateTime.Now, }; + + BarCode = ""; var existedProduction = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); if (existedProduction != null) @@ -283,8 +293,9 @@ RunImageHandle(s.CameraOp.OpConfig, set, s.Id, s.Name, pMeasure.Measurements); }); - BarCode = ""; LogAsync(DateTime.Now, $"{pMeasure.Barcode}娴嬮噺鍔ㄤ綔瀹屾垚", ""); + + GC.Collect(0, GCCollectionMode.Optimized); return new ProcessResponse(true); } @@ -452,6 +463,7 @@ productionList.RemoveAll(p => p.Barcode == pMeasure.Barcode); pMeasure.Dispose(); + //LogAsync(DateTime.Now, $"{pMeasure.Barcode}浜у搧淇℃伅閲婃斁瀹屾垚", JsonConvert.SerializeObject(pMeasure)); } } @@ -729,8 +741,6 @@ #region RawData { - //rawDataSheet = package.Workbook.Worksheets["RawData"]; - int rowDataStartCol = rawDataSheet.Dimension.Columns; var barcodeCell = rawDataSheet.Cells[1, rowDataStartCol + 1, 1, rowDataStartCol + 4]; barcodeCell.Merge = true; @@ -776,12 +786,7 @@ if (slantMeasures.Count > 0) { int slantStartCol = slantSheet.Dimension.Columns; - - //var barcodeCell = slantSheet.Cells[1, slantStartCol + 1, 1, slantStartCol + 2]; - //barcodeCell.Merge = true; - //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; - //SetTitleCell(barcodeCell); - + var barcodeCell = slantSheet.Cells[1, slantStartCol + 1]; barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; SetTitleCell(barcodeCell); @@ -789,10 +794,6 @@ var valueCell = slantSheet.Cells[2, slantStartCol + 1]; valueCell.Value = "Value"; SetTitleCell(valueCell); - - //var resultCell = slantSheet.Cells[2, slantStartCol + 2]; - //resultCell.Value = "Result"; - //SetTitleCell(resultCell); slantMeasures.ForEach(m => { @@ -937,6 +938,11 @@ #endregion package.Save(); + + rawDataSheet.Dispose(); + slantSheet.Dispose(); + alignmentSheet.Dispose(); + rowAlignmentSheet.Dispose(); }; } }); @@ -1191,11 +1197,17 @@ }); image.Dispose(); + image = null; } //); imgSet.HImage.Dispose(); + imgSet.HImage = null; + imgSet.Dispose(); + images.Dispose(); + images = null; + //if (count.I != 1) //{ // hImage?.Dispose(); -- Gitblit v1.8.0