static void Main(string[] args) { try { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; SetWorkingDirectory(); var argDict = ProcessArgs(args); JsonConvert.DefaultSettings = () => { var settings = new JsonSerializerSettings(); settings.Error = (sender, arg) => { arg.ErrorContext.Handled = true; }; return(settings); }; if (argDict.ContainsKey("update")) { Updater.CoreUpdate(); } if (OSUtils.IsWindows) { #if DEBUG IsDebug = true; DeviceSocket.Connect(); #else ServiceBase.Run(new WindowsService()); #endif } else { DeviceSocket.Connect(); } while (true) { System.Threading.Thread.Sleep(1000); } } catch (Exception ex) { Logger.Write(ex); throw; } }
private static async void Init(string[] args) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; #if DEBUG IsDebug = true; #endif SetWorkingDirectory(); var argDict = ProcessArgs(args); JsonConvert.DefaultSettings = () => { var settings = new JsonSerializerSettings(); settings.Error = (sender, arg) => { arg.ErrorContext.Handled = true; }; return(settings); }; if (argDict.ContainsKey("update")) { Updater.CoreUpdate(); } if (!IsDebug && OSUtils.IsWindows) { _ = Task.Run(() => { ServiceBase.Run(new WindowsService()); }); } try { await DeviceSocket.Connect(); } finally { await HandleConnection(); } }
private static async Task HandleConnection() { while (true) { try { if (!DeviceSocket.IsConnected) { var waitTime = new Random().Next(1000, 30000); Logger.Write($"Websocket closed. Reconnecting in {waitTime / 1000} seconds..."); await Task.Delay(waitTime); await DeviceSocket.Connect(); } } catch (Exception ex) { Logger.Write(ex); } Thread.Sleep(1000); } }