From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs |   75 ++++++++++++++++++++++---------------
 1 files changed, 44 insertions(+), 31 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs
index b721d1b..6e36d1d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs
@@ -26,9 +26,9 @@
         /// </summary>
         private bool newGatewayGetting = false;
         /// <summary>
-        /// 缃戝叧妫�娴嬩腑
+        /// 缃戝叧鎼滅储涓�
         /// </summary>
-        private string isGatewayChecking = "0";
+        private bool isGatewaySearching = true;
 
         #endregion
 
@@ -70,6 +70,8 @@
 
             //鍒濆鍖栬繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉
             this.InitConcetionAnimete();
+            //寮�鍚綉鍏虫娴嬬殑绾跨▼
+            this.StartCheckGatewayThread();
         }
 
         /// <summary>
@@ -160,7 +162,7 @@
             btnReDo.Gravity = Gravity.CenterHorizontal;
             btnReDo.TextAlignment = TextAlignment.Center;
             btnReDo.TextID = R.MyInternationalizationString.uReDoAgain;
-            frameback.AddChidren(btnReDo, ChidrenBindMode.BindEventOnly);
+            frameback.AddChidren(btnReDo, ChidrenBindMode.BindEvent);
             frameback.ButtonClickEvent += (sender, e) =>
             {
                 //鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠�
@@ -236,10 +238,6 @@
             string strMsg = btnMsg.Text;
             HdlThreadLogic.Current.RunThread(() =>
             {
-                //娓呯┖鍏ㄩ儴鍒楄〃
-                HdlGatewayLogic.Current.ClearAllRealGateway();
-                ZigBee.Common.Application.IsSearchingGateway = true;
-
                 int index = 1;
                 //璁℃椂鏃堕棿
                 int timeCount = 0;
@@ -253,25 +251,6 @@
                         //5绉掑悗娓呯┖缃戝叧鍒楄〃
                         HdlGatewayLogic.Current.ClearAllRealGateway();
                         ZigBee.Common.Application.IsSearchingGateway = true;
-                    }
-                    if (timeCount % 4 == 0 && timeCount >= 10)
-                    {
-                        lock (isGatewayChecking)
-                        {
-                            if (isGatewayChecking != "1")
-                            {
-                                isGatewayChecking = "1";
-                                HdlThreadLogic.Current.RunThread(async () =>
-                                {
-                                    //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏�
-                                    await this.CheckZbGatewayAndSetRow();
-                                    lock (isGatewayChecking)
-                                    {
-                                        isGatewayChecking = "0";
-                                    }
-                                });
-                            }
-                        }
                     }
                     if (timeCount % 2 == 0)
                     {
@@ -297,6 +276,9 @@
 
                     System.Threading.Thread.Sleep(500);
                 }
+                //鎼滅储缁撴潫
+                this.isGatewaySearching = false;
+
                 if (timeOut <= 0)
                 {
                     HdlThreadLogic.Current.RunMain(() =>
@@ -324,15 +306,46 @@
         #region 鈻� 缃戝叧妫�娴媉__________________________
 
         /// <summary>
+        /// 寮�鍚綉鍏虫娴嬬殑绾跨▼
+        /// </summary>
+        private void StartCheckGatewayThread()
+        {
+            this.isGatewaySearching = true;
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                int count = 0;
+                while (this.Parent != null && this.isGatewaySearching == true)
+                {
+                    //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏�
+                    System.Threading.Thread.Sleep(500);
+                    count++;
+                    if (count < 4)
+                    {
+                        //涓昏涓轰簡蹇竴鐐硅兘澶熶腑鏂繖涓嚎绋�
+                        continue;
+                    }
+                    count = 0;
+
+                    await this.CheckZbGatewayAndSetRow();
+
+                    if (this.newGatewayGetting == true)
+                    {
+                        //鑾峰彇寰楀埌鏂扮綉鍏�,鍒欎腑鏂嚎绋�
+                        break;
+                    }
+                }
+            });
+        }
+
+        /// <summary>
         /// 妫�娴嬫悳绱㈠埌鐨勭綉鍏�
         /// </summary>
         private async Task<bool> CheckZbGatewayAndSetRow()
         {
-            var listCheck = new HashSet<string>();
             for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
             {
                 var way = ZbGateway.GateWayList[i];
-                var wayId = HdlGatewayLogic.Current.GetGatewayId(way);
+                var wayId = way.GwId;
                 if (dicZbGatewayDiv.ContainsKey(wayId) == true)
                 {
                     //宸茬粡澶勭悊浜�
@@ -343,9 +356,9 @@
                 GatewayBindMode mode = GatewayBindMode.BindAgain;
                 //濡傛灉鏄涓�娆$粦瀹�,鎴栬�呮槸浠ュ墠宸茬粡缁戝畾杩囦簡鐨�
                 if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true
-                    || way.getGatewayBaseInfo.HomeId == Common.Config.Instance.HomeId)
+                    || way.HomeId == Common.Config.Instance.HomeId)
                 {
-                    if (way.getGatewayBaseInfo.HomeId != Common.Config.Instance.HomeId)
+                    if (way.HomeId != Common.Config.Instance.HomeId)
                     {
                         //绗竴娆$粦瀹�,涔熷氨鏄綉鍏充綇瀹匢D涓虹┖
                         mode = GatewayBindMode.First;
@@ -386,7 +399,7 @@
                     this.newGatewayGetting = true;
                 }
 
-                if (mode == GatewayBindMode.First)
+                if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded)
                 {
                     //鎴戣寰楄繖閲岄渶瑕佽幏鍙栦竴涓嬫柊缃戝叧鐨勮澶囧垪琛�
                     Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way);

--
Gitblit v1.8.0