/// <summary> /// 当服务停止时执行此方法 /// </summary> public void Stop() { try { _rpcServer.Close(); Log.Info(Info, "Stop", "Successful"); } catch (Exception ex) { Log.Info(Info, "Stop Error", ex.Message); } }
public async Task <int> Execute() { // service mode if (LogLvl.HasValue) { Settings.LogLevel.Value = LogLvl.Value; } Console.Title = "gsudo Service"; var cacheLifetime = new CredentialsCacheLifetimeManager(AllowedPid); Logger.Instance.Log("Service started", LogLevel.Info); using (IRpcServer server = CreateServer()) { try { cacheLifetime.OnCacheClear += server.Close; ShutdownTimer = new Timer((o) => server.Close(), null, Timeout.Infinite, Timeout.Infinite); // 10 seconds for initial connection or die. server.ConnectionAccepted += (o, connection) => AcceptConnection(connection).ConfigureAwait(false).GetAwaiter().GetResult(); server.ConnectionClosed += (o, connection) => EnableTimer(); Logger.Instance.Log($"Service will shutdown if idle for {CacheDuration}", LogLevel.Debug); EnableTimer(); await server.Listen().ConfigureAwait(false); } catch (System.OperationCanceledException) { } finally { cacheLifetime.OnCacheClear -= server.Close; } } Logger.Instance.Log("Service stopped", LogLevel.Info); return(0); }
public async Task <int> Execute() { // service mode if (LogLvl.HasValue) { GlobalSettings.LogLevel.Value = LogLvl.Value; } Console.Title = "gsudo Service"; Logger.Instance.Log("Service started", LogLevel.Info); using (IRpcServer server = CreateServer()) { ShutdownTimer = new Timer((o) => server.Close()); server.ConnectionAccepted += async(o, connection) => await AcceptConnection(connection).ConfigureAwait(false); server.ConnectionClosed += (o, cònnection) => EnableTimer(); await server.Listen().ConfigureAwait(false); } Logger.Instance.Log("Service stopped", LogLevel.Info); return(0); }
/// <summary> /// 当服务停止时执行此方法 /// </summary> public void Stop() { _rpcServer.Close(); Log.Info("stop"); }