|
@@ -418,18 +418,18 @@ namespace PRSDesktop
|
|
|
if ((transport is IRpcClientTransport client))
|
|
|
{
|
|
|
Dispatcher.Invoke(() => {
|
|
|
- Progress.ShowModal("Reconnecting", (progress) =>
|
|
|
+ var success = Progress.ShowModal("Reconnecting", "Exit PRS", (progress, ct) =>
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
DateTime lost = DateTime.Now;
|
|
|
- while (!client.IsConnected())
|
|
|
+ while (!client.IsConnected() && !ct.IsCancellationRequested)
|
|
|
{
|
|
|
progress.Report($"Connection lost - ({(DateTime.Now - lost):hh\\:mm})");
|
|
|
try
|
|
|
{
|
|
|
Logger.Send(LogType.Error, ClientFactory.UserID, "Reconnecting - ({0:hh\\:mm})", DateTime.Now - lost);
|
|
|
- client.Connect();
|
|
|
+ client.Connect(ct);
|
|
|
if (client.IsConnected())
|
|
|
break;
|
|
|
}
|
|
@@ -438,13 +438,20 @@ namespace PRSDesktop
|
|
|
Logger.Send(LogType.Error, ClientFactory.UserID, $"Reconnect Failed: {e1.Message}");
|
|
|
}
|
|
|
}
|
|
|
- ClientFactory.Validate(ClientFactory.SessionID);
|
|
|
+ if (client.IsConnected())
|
|
|
+ {
|
|
|
+ ClientFactory.Validate(ClientFactory.SessionID);
|
|
|
+ }
|
|
|
}
|
|
|
catch(Exception e)
|
|
|
{
|
|
|
Logger.Send(LogType.Error, ClientFactory.UserID, $"Reconnect Failed: {e.Message}");
|
|
|
}
|
|
|
});
|
|
|
+ if (!success)
|
|
|
+ {
|
|
|
+ Close();
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
}
|