private static void RunBatch() { Task.Run(() => { while (true) { try { if (__services.Count > 0) { foreach (var service in __services) { if (!WinServiceHelper.IsServiceInstalled(service)) { _log.Error($"service {service} not installed!"); } if (!WinServiceHelper.IsServiceRunning(service)) { _log.Error($"service {service} is down. now bring is up ."); WinServiceHelper.StartService(service); _log.Info( $"service {service} status is : {WinServiceHelper.ServiceStatus(service).ToString()}"); } } } } catch (Exception ex) { _log.Error(ex); } finally { Thread.Sleep(60000); } } }); }
private static void RunBatch() { Task.Run(() => { while (true) { try { var now = DateTime.Now; //var nowMin = now.TimeOfDay.TotalMinutes; foreach (var service in __services) { var serviceName = service.Key; var serviceInfo = __services[serviceName]; if (serviceInfo.LastStartTime == DateTime.MinValue || (now - serviceInfo.LastStartTime).TotalMinutes > serviceInfo.RebootFrequency) { Print($"Stopping service {serviceName}"); __services[service.Key].LastStartTime = now; WinServiceHelper.StopService(serviceName); var counter = 0; while (counter <= 100) { if (WinServiceHelper.ServiceStatus(serviceName) == ServiceControllerStatus.Stopped) { break; } counter++; Thread.Sleep(10 * 1000); } Print($"Starting service {serviceName}"); while (true) { WinServiceHelper.StartService(serviceName); Thread.Sleep(10 * 1000); if (WinServiceHelper.ServiceStatus(serviceName) == ServiceControllerStatus.Running) { break; } } Print($"Done :{serviceName}"); } else { // Print($"{serviceName} last start : {serviceInfo.LastStartTime}"); // Print($" {(now-serviceInfo.LastStartTime).TotalMinutes} > {serviceInfo.RebootFrequency} ?"); //wait } } } catch (Exception ex) { Print(ex.Message); _log.Error(ex); } finally { Thread.Sleep(60000); } } }); }