소스 검색

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();
             });
         }