浏览代码

Added Logging and Retry to Mobile Disconnection Handling

Frank van den Bos 1 年之前
父节点
当前提交
3c349df9bf
共有 1 个文件被更改,包括 26 次插入3 次删除
  1. 26 3
      prs.mobile.new/PRS.Mobile/Main/DataModel.cs

+ 26 - 3
prs.mobile.new/PRS.Mobile/Main/DataModel.cs

@@ -428,9 +428,32 @@ namespace PRS.Mobile
             TransportDisconnected?.Invoke(new TransportDisconnectedEventArgs());
             Task.Run(() =>
             {
-                while (!IsConnected())
-                    App.Transport.Connect();
-                ClientFactory.Validate(ClientFactory.SessionID);
+                ValidationStatus status = ValidationStatus.INVALID;
+                while (status != ValidationStatus.VALID)
+                {
+                    try
+                    {
+                        while (!IsConnected())
+                        {
+                            
+                            try
+                            {
+                                App.Transport.Connect();
+                            }
+                            catch (Exception eConnect)
+                            {
+                                MobileLogging.Log($"Reconnect() {eConnect.Message} \n {eConnect.StackTrace}");
+                                Task.Delay(TimeSpan.FromMilliseconds(1000));
+                            }
+                        }
+                        status = ClientFactory.Validate(ClientFactory.SessionID);
+                    }
+                    catch (Exception ex)
+                    {
+                        MobileLogging.Log($"Revalidate() {ex.Message} \n {ex.StackTrace}");
+                        Task.Delay(TimeSpan.FromMilliseconds(1000));
+                    }
+                }
                 DigitalFormDocumentFactory.Run();
             });
         }