From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期六, 06 三月 2021 11:35:20 +0800 Subject: [PATCH] 1. 解决软件异常崩溃问题 --- src/Bro.M071.Process/UI/M071_MainForm.cs | 63 ++++++++++++++++++++++++++++++- 1 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs index 1266611..8849ca7 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.cs +++ b/src/Bro.M071.Process/UI/M071_MainForm.cs @@ -24,6 +24,9 @@ M071Config Config => Process?.IConfig as M071Config; M071Process Process_M071 => Process as M071Process; + System.Threading.Timer _refreshUITimer = null; + + public M071_MainForm() { InitializeComponent(); @@ -36,6 +39,7 @@ tscEditLocation.Visible = tsmiShowEditor.Checked = false; + _refreshUITimer = new System.Threading.Timer(OnRefreshUI, null, -1, -1); this.Load += async (s, e) => { await Task.Delay(300); @@ -44,7 +48,7 @@ cvImage.OnElementChangedHandle -= CvImage_OnElementChangedHandle; cvImage.OnElementChangedHandle += CvImage_OnElementChangedHandle; - timer1.Enabled = true; + //timer1.Enabled = true; btnReset.Text = $"澶嶄綅锛堥暱鎸墈Config.FullResetRequiredDuration}绉掑ぇ澶嶄綅锛�"; @@ -279,6 +283,12 @@ #endregion #region 鏍囩缁撴灉鏄剧ず + + private void OnRefreshUI(object state) + { + cvImage.Invoke(new Action(() => Refresh())); + } + private async void Process_M071_OnElementUpdated(Common.Interface.IShapeElement obj) { //this.Invoke(new Action(() => @@ -307,7 +317,8 @@ (ele as KeyIndicator).Text = keyIndicator.Text; (ele as KeyIndicator).ResultState = keyIndicator.ResultState; - this.Invalidate(); + //this.Invalidate(); + _refreshUITimer.Change(1000, -1); })); } @@ -533,7 +544,7 @@ private void timer1_Tick(object sender, EventArgs e) { - cvImage.Refresh(); + //cvImage.Refresh(); } private void lblOperator_DoubleClick(object sender, EventArgs e) @@ -574,5 +585,51 @@ })); }); } + + bool isStart = true; + private void button1_Click(object sender, EventArgs e) + { + Task.Run(async () => + { + try + { + for (int j = 0; j < 10000; j++) + { + int i = 0; + + if (isStart) + { + cvImage.Elements.ToList().ForEach(ele => + { + if (ele is KeyIndicator indicator) + { + indicator.Text = ""; + indicator.ResultState = null; + } + }); + } + else + { + cvImage.Elements.ToList().ForEach(ele => + { + if (ele is KeyIndicator indicator) + { + indicator.Text = (i++).ToString(); + indicator.ResultState = true; + } + }); + } + isStart = !isStart; + cvImage.BeginInvoke(new Action(() => Refresh())); + LogAsync(DateTime.Now, $"UI Refresh {j}", ""); + await Task.Delay(300); + } + } + catch (Exception ex) + { + } + + }); + } } } -- Gitblit v1.8.0