using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using WebApplication3.Clases; using System.IO; using WebApplication3.Controllers; using WebApplication3.Models; namespace WebApplication3.Clases { public class Worker : BackgroundService { private readonly ILogger _logger; private ServicioController servicioController; private ServiceQueueController serviceQueueController; public Worker(ILogger logger) { _logger = logger; var aquiferContext = new AquiferContext(); servicioController = new ServicioController(aquiferContext); serviceQueueController = new ServiceQueueController(aquiferContext); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { Proceso proceso = Proceso.GetInstance(); while (!stoppingToken.IsCancellationRequested) { try { //logger.LogInformation("Process is started: "+proceso.Started+" and has exited "+proceso.HasExited()+" at: "+ DateTimeOffset.Now); //_logger.LogInformation("STATE OF PID: "+proceso.GetPid().ToString()+"is "+proceso.HasExited()); if (proceso.Started && proceso.HasExited()) { proceso.Started = false; proceso.Detected = true; int terminado = await servicioController.SetTerminado(proceso.GetPid()); if( terminado > 0) { _logger.LogInformation("Process " + proceso.GetPid() + " has terminated", DateTimeOffset.Now); } } } catch (Exception ex) { _logger.LogInformation(ex.Message, DateTimeOffset.Now); } await Task.Delay(1000, stoppingToken); } } public void LogInfo(string msg) { _logger.LogInformation(msg); } } }