From c2348ebb81ca12b72eee6fbe9eee47925c1a5b07 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期三, 06 九月 2023 12:02:54 +0800 Subject: [PATCH] Merge branch 'wxr-2.1' into wxr-2.0 --- HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs | 165 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 106 insertions(+), 59 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs index ad7b605..c9d675a 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs @@ -6,52 +6,99 @@ namespace HDL_ON.UI { public partial class ColorTureLampPage - { + { + /// <summary> + /// 閫氱煡鏇存柊鐣岄潰鐨勬椂闂� + /// </summary> + DateTime notiyUpdateTime = DateTime.MinValue; + System.Threading.Thread updateUiThread; + object lockObj = new object(); /// <summary> /// 鏇存柊鍔熻兘鐘舵�� /// </summary> public static void UpdataStatus(Function updataTemp) - { - Application.RunOnMainThread(() => - { - try - { - if (bodyView == null) - return; - if (updataTemp.spk == bodyView.function.spk && updataTemp.sid == bodyView.function.sid) - { - if (updataTemp.trait_on_off.curValue.ToString() == "on") - { - bodyView.dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); - if (!bodyView.onDimmerBar) - { - bodyView.dimmerBar.Progress = Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness)); - } - if (updataTemp.GetAttrState(FunctionAttributeKey.Brightness) != "0") - { - bodyView.btnBrightnessText.Text = updataTemp.GetAttrState(FunctionAttributeKey.Brightness) + "%"; - bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); - } - } - else - { - bodyView.dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor); - } - bodyView.btnSwitch.IsSelected = updataTemp.trait_on_off.curValue.ToString() == "on"; - bodyView.barColorTemplatrue.Enable = updataTemp.trait_on_off.curValue.ToString() == "on"; - var cct = 27; - int.TryParse(updataTemp.GetAttrState(FunctionAttributeKey.CCT), out cct); - bodyView.barColorTemplatrue.Progress = cct / 100; - //璁剧疆鍒濆鍊� - bodyView.barColorTemplatrue.SetCustomText(bodyView.barColorTemplatrue.Progress * 100 + "K"); - - } - } - catch (Exception ex) - { - MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}"); - } - }); + { + if(bodyView == null) + { + return; + } + lock (bodyView.lockObj) + { + MainPage.Log($"鏀跺埌鏇存柊" + DateTime.Now.Ticks); + bodyView.notiyUpdateTime = DateTime.Now; + if (bodyView.updateUiThread == null) + { + bodyView.updateUiThread = new System.Threading.Thread(() => + { + while (true) + { + System.Threading.Thread.Sleep(1500); + if (bodyView == null) + { + return; + } + if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime) + { + MainPage.Log("娌℃湁鏂版暟鎹紝鏇存柊UI"); + break; + } + else + { + MainPage.Log("鏈夋柊鏁版嵁锛岀户缁瓑寰�"); + } + } + + Application.RunOnMainThread(() => + { + try + { + if (bodyView == null) + return; + if (updataTemp.spk == bodyView.function.spk && updataTemp.sid == bodyView.function.sid) + { + if (updataTemp.trait_on_off.curValue.ToString() == "on") + { + bodyView.dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); + if (!bodyView.onDimmerBar) + { + bodyView.dimmerBar.Progress = Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness)); + } + if (updataTemp.GetAttrState(FunctionAttributeKey.Brightness) != "0") + { + bodyView.btnBrightnessText.Text = updataTemp.GetAttrState(FunctionAttributeKey.Brightness) + "%"; + bodyView.btnBrightnessText.Y = ((100 - Convert.ToInt32(updataTemp.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); + } + } + else + { + bodyView.dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor); + } + bodyView.btnSwitch.IsSelected = updataTemp.trait_on_off.curValue.ToString() == "on"; + bodyView.barColorTemplatrue.Enable = updataTemp.trait_on_off.curValue.ToString() == "on"; + var cct = 27; + int.TryParse(updataTemp.GetAttrState(FunctionAttributeKey.CCT), out cct); + bodyView.barColorTemplatrue.Progress = cct / 100; + //璁剧疆鍒濆鍊� + bodyView.barColorTemplatrue.SetCustomText(bodyView.barColorTemplatrue.Progress * 100 + "K"); + + } + } + catch (Exception ex) + { + MainPage.Log($"{bodyView.GetType().Name} UpdataStates error : {ex.Message}"); + } + finally + { + bodyView.updateUiThread = null; + } + + }); + + bodyView.updateUiThread.IsBackground = true; + bodyView.updateUiThread.Start(); + }); + } + } } void LoadEventList() @@ -181,9 +228,9 @@ curDimmerStatus = onDimmerBar = true; }; dimmerBar.OnProgressChangedEvent = (sender, e) => - { - //dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); - if (!btnSwitch.IsSelected) + { + //dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); + if (!btnSwitch.IsSelected) { dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); } @@ -196,20 +243,20 @@ d.Add(FunctionAttributeKey.Brightness, e.ToString()); Control.Ins.SendWriteCommand(function, d); } - else - { - if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) - { - function.refreshTime = DateTime.Now; - new System.Threading.Thread(() => - { - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.Brightness, e.ToString()); - Control.Ins.SendWriteCommand(function, d); - }) - { IsBackground = true }.Start(); - } - } + //else + //{ + // if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) + // { + // function.refreshTime = DateTime.Now; + // new System.Threading.Thread(() => + // { + // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + // d.Add(FunctionAttributeKey.Brightness, e.ToString()); + // Control.Ins.SendWriteCommand(function, d); + // }) + // { IsBackground = true }.Start(); + // } + //} btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80); -- Gitblit v1.8.0