private void AsyncOperationCallback(Object stateInfo) { if (IsAsync) { return; } IsAsync = true; try { using (ScheduleServicesDS ds = new ScheduleServicesDS()) { Schedule schedule = new Schedule(); LogHelper.LogInfo("inizio attività"); schedule.EstraiSchedule(ds); foreach (ScheduleServicesDS.SCHEDULERow riga in ds.SCHEDULE) { string[] elementi = riga.ORAESECUZIONE.Split(':'); if (elementi.Length < 2 || elementi.Length > 3) { LogHelper.LogError(string.Format("Errore nella stringa ora {0} del servizio schedulato id: {1} ", riga.ORAESECUZIONE, riga.IDSCHEDULE)); return; } int ora = 0; int minuti = 0; int secondi = 0; if (!int.TryParse(elementi[0], out ora)) { LogHelper.LogError(string.Format("Errore nella conversione della stringa ora {0} del servizio schedulato id: {1} ", riga.ORAESECUZIONE, riga.IDSCHEDULE)); return; } if (!int.TryParse(elementi[1], out minuti)) { LogHelper.LogError(string.Format("Errore nella conversione della stringa ora {0} del servizio schedulato id: {1} ", riga.ORAESECUZIONE, riga.IDSCHEDULE)); return; } if (elementi.Length == 3) { if (!int.TryParse(elementi[2], out secondi)) { LogHelper.LogError(string.Format("Errore nella conversione della stringa ora {0} del servizio schedulato id: {1} ", riga.ORAESECUZIONE, riga.IDSCHEDULE)); return; } } DateTime oraSchedulata = new DateTime(riga.DATAESECUZIONE.Year, riga.DATAESECUZIONE.Month, riga.DATAESECUZIONE.Day, ora, minuti, secondi); if (oraSchedulata < DateTime.Now) { riga.ESEGUITA = SiNo.Si; schedule.RischedulaServizio(riga, ds); schedule.SalvaModificheSchedulazione(ds); IScheduledTask task = schedule.EstraiScheduledTask(riga); try { task.Esegui(); } catch (Exception exc) { LogHelper.LogError("Errore in task.esegui", exc); } } } } //using (GestioneOrdiniCliente gos = new GestioneOrdiniCliente()) //{ // LogHelper.LogInfo("Inizio attivita"); // gos.DoIt(); // LogHelper.LogInfo("Fine attivita"); //} } catch (Exception ex) { LogHelper.LogError("Errore in AsyncOperationCallback", ex); } finally { IsAsync = false; } }
protected override void OnStop() { LogHelper.LogInfo("#### SCHEDULED SERVICE FERMATO ####"); }