From aefe9f2572eac7c61f6d2952593ec18a700dfcf0 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期二, 01 六月 2021 11:43:19 +0800 Subject: [PATCH] 1. 上传数据线程部分修改,界面关闭时退出所有相关线程 --- CommonUtil.cs | 37 ++++++++++-------- MainForm.cs | 26 ++++++++++-- Properties/AssemblyInfo.cs | 4 +- Program.cs | 1 DetectionDataUpload.cs | 43 +++++++++++++-------- 5 files changed, 72 insertions(+), 39 deletions(-) diff --git a/CommonUtil.cs b/CommonUtil.cs index 0e7b920..b9ed9bd 100644 --- a/CommonUtil.cs +++ b/CommonUtil.cs @@ -6,6 +6,7 @@ using System.Runtime.InteropServices; using System.Windows; using System.Windows.Forms; +using System.Threading; namespace M423project { @@ -46,22 +47,22 @@ private static object lockObj = new object(); private static object logObj = new object(); - private static bool uploadDataEnable = true; + //private static bool uploadDataEnable = true; - public static bool UploadDataEnable - { - get - { - lock (lockObj) { return uploadDataEnable; } - } - set - { - lock (lockObj) - { - uploadDataEnable = value; - } - } - } + //public static bool UploadDataEnable + //{ + // get + // { + // lock (lockObj) { return uploadDataEnable; } + // } + // set + // { + // lock (lockObj) + // { + // uploadDataEnable = value; + // } + // } + //} private static DetectionOption detectionOption = DetectionOption.doProduct; @@ -118,7 +119,11 @@ /// 涓荤獥浣撳紩鐢� /// </summary> public static MainForm mainForm { get; set; } - + + public static ManualResetEvent UploadDoneHandle = new ManualResetEvent(true); + public static object UploadDataLock = new object(); + public static bool UploadDataEnable = true; + static CommonUtil() { CurrentDir = Directory.GetCurrentDirectory(); diff --git a/DetectionDataUpload.cs b/DetectionDataUpload.cs index 4d02940..536b414 100644 --- a/DetectionDataUpload.cs +++ b/DetectionDataUpload.cs @@ -23,7 +23,7 @@ { #region 鏁版嵁涓婁紶鐩稿叧绉佹湁鎴愬憳 private DetectionData detectionData; - private Thread uploadDataProcesser; + private Thread uploadDataProcesser = null; //private RunCard runCard; private ConfigStruct config; #endregion @@ -43,33 +43,43 @@ /// </summary> public void Start() { - uploadDataProcesser = new Thread(Execute); - uploadDataProcesser.Start(); + if (uploadDataProcesser == null) + { + uploadDataProcesser = new Thread(Execute); + uploadDataProcesser.IsBackground = true; + uploadDataProcesser.Start(); + } } public void Stop() { - if (uploadDataProcesser != null && uploadDataProcesser.IsAlive) - { - uploadDataProcesser.Abort(); - uploadDataProcesser.Join(); - } - uploadDataProcesser = null; + //if (uploadDataProcesser != null && uploadDataProcesser.IsAlive) + //{ + // uploadDataProcesser.Abort(); + // uploadDataProcesser.Join(); + //} + //uploadDataProcesser = null; } - static object uploadLock = new object(); + //static object uploadLock = new object(); public void UploadData() { - lock (uploadLock) + lock (CommonUtil.UploadDataLock) { + if (!CommonUtil.UploadDataEnable) + return; + DataTable dtUpload = detectionData.QueryUnloadData(); if (dtUpload.Rows.Count <= 0) return; + if (dtUpload.Rows.Count < 20) { Thread.Sleep(2000); dtUpload = detectionData.QueryUnloadData(); } + + CommonUtil.UploadDoneHandle.Reset(); // Type runCardClass = asm.GetType("AutoRunCard.RunCard"); // object runCardObj = Activator.CreateInstance(runCardClass); @@ -168,6 +178,7 @@ //} CommonUtil.WriteLog(LogType.Inf, string.Format("妫�娴嬭褰曚笂浼犵粨鏉�,鍏辨湁{0}绗斿緟涓婁紶鏁版嵁锛屾垚鍔熶笂浼爗1}绗�", dtUpload.Rows.Count, uploadCount)); + CommonUtil.UploadDoneHandle.Set(); } } @@ -234,11 +245,11 @@ int times = 1200 * 5; while (uploadDataProcesser.IsAlive) { - if (!CommonUtil.UploadDataEnable) - { - Thread.Sleep(20); - continue; - } + //if (!CommonUtil.UploadDataEnable) + //{ + // Thread.Sleep(20); + // continue; + //} //UploadData(asm); UploadData(); diff --git a/MainForm.cs b/MainForm.cs index 19f79e4..9355a5c 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -1075,18 +1075,34 @@ #region 浜嬩欢 private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { - Stop(); - SaveMeasureTTL(); - Task.Factory.StartNew(() => + try { + Stop(); + SaveMeasureTTL(); + //Task.Factory.StartNew(() => + //{ SpotCheckData data = new SpotCheckData(); data.UpdateLastBreakProductQty(measureResultTTL.ProductQuntity); DownTimeData downTimeData = new DownTimeData(); DownTime downTime = new DownTime() { BeginTime = DateTime.Now, Type = DownTimeType.Closed }; downTimeData.SaveDownTime(downTime); - }); + //}); - MessageHandler.MessageHandlerInstance.Close(); + MessageHandler.MessageHandlerInstance.Close(); + } + catch (Exception ex) + { + Trace.TraceError($"鐣岄潰鍏抽棴寮傚父锛歿ex.Message}"); + } + finally + { + lock (CommonUtil.UploadDataLock) + { + //CommonUtil.UploadDoneHandle.WaitOne(); + CommonUtil.UploadDataEnable = false; + System.Environment.Exit(0); + } + } } private void btnConfig_Click(object sender, EventArgs e) diff --git a/Program.cs b/Program.cs index c0084e4..04ef6be 100644 --- a/Program.cs +++ b/Program.cs @@ -28,6 +28,7 @@ { //聽绋嬪簭宸茬粡杩愯,鏄剧ず鎻愮ず鍚庨��鍑� MessageBox.Show("搴旂敤绋嬪簭宸茬粡杩愯!"); + System.Environment.Exit(0); } } } diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 8f75b42..90a2bfd 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滃唴閮ㄧ増鏈彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝 // 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.1.2")] -[assembly: AssemblyFileVersion("1.0.1.2")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] -- Gitblit v1.8.0