public void TestScript() { if (corriendo) { LogMessage("Ya esta corriendo un script"); return; } if (BtnChecked.Checked) txtLog.Clear(); var procAux = new Procesador(); PrepararProceso(procAux); LogMessage("probando script"); Task.Factory.StartNew(() => { var proc = new CorrerScript(); proc.Data["proc"] = procAux; proc.OnMessage += LogMessageEvent; var reloj = new Stopwatch(); reloj.Start(); try { lock (this) corriendo = true; proc.Correr(editorScript.Text, config.CarpetaTrabajo); } catch (Exception ex) { LogMessage("Error " + ex.Message, ex); } finally { lock (this) corriendo = false; reloj.Stop(); proc.OnMessage -= LogMessageEvent; LogMessage("Terminado en " + reloj.Elapsed.TotalSeconds); } }).ContinueWith(a => { if (a.IsFaulted && a.Exception != null) { var ex = a.Exception.InnerException; LogMessage("Error " + ex.Message, ex); } }); }
private void BtnProceso_Click(object sender, EventArgs e) { var proc = new Procesador(); var error = PrepararProceso(proc); if (!string.IsNullOrEmpty(error)) { LogMessage(error); MessageBox.Show(error); return; } dynamic opciones = new ExpandoObject(); opciones.limite = 0; var task = new Task(() => { proc.OnMessage += LogMessageEvent; proc.OnProgress += ReportProgreso; var reloj = new Stopwatch(); reloj.Start(); LogMessage("Empezando con " + proc.City.Nombre); var conf = new ConfigProceso { CarpetaTrabajo = config.CarpetaTrabajo, ScriptFile = Path.Combine(config.CarpetaTrabajo, config.ScriptProceso) }; try { proc.Calcular(conf); LogMessage("Calculo terminado para " + proc.City.Nombre); } catch (Exception ex) { LogMessage("Error " + ex.Message, ex); } finally { reloj.Stop(); proc.OnMessage -= LogMessageEvent; proc.OnProgress -= ReportProgreso; LogMessage("Terminado en " + reloj.Elapsed.TotalSeconds + "segundos"); } }); task.Start(); }
public string PrepararProceso(Procesador proc) { var error = ""; var aux = GetSelected(listViewFuentes); if (string.IsNullOrEmpty(aux)) error = "Seleccione Fuente"; else proc.Fuente = fuentesFactory.Fuentes.FirstOrDefault(x => x.Name == aux); aux = GetSelected(listViewFichas); if (string.IsNullOrEmpty(aux)) error = "Seleccione Ficha"; else proc.Ficha = datosProceso.Fichas.FirstOrDefault(x => x.Nombre == aux); aux = GetSelected(listViewCatalogos); if (!string.IsNullOrEmpty(aux)) proc.Catalogo = datosProceso.CatalogosFuentes[aux]; aux = GetSelected(listViewMapeos); if (!string.IsNullOrEmpty(aux)) proc.Mapeos = datosProceso.MapeosCargados[aux]; if (string.IsNullOrEmpty(config.ScriptProceso)) error = "Falta el script"; proc.City = ComboCiudad.ComboBox.SelectedItem as Ciudad; return error; }