diff --git a/Helper/HelperGdb.cs b/Helper/HelperGdb.cs index f653010..28b7f37 100644 --- a/Helper/HelperGdb.cs +++ b/Helper/HelperGdb.cs @@ -900,7 +900,7 @@ namespace OliviaAddInPro.Helper var av = (int)o; if (av > 0) { - cps.SetProgress( cps.GetProgress()+ ((double)av/100*Math.Min(incmax, 100-valini))); + cps.SetProgress(valini + (Math.Min((double)av/100.0, 100.0)*Math.Min(incmax, 100-valini))); } // if ((int)o < 0) //System.Windows.MessageBox.Show(msg2); diff --git a/Model/Limpieza.cs b/Model/Limpieza.cs index 4121545..41b7bf1 100644 --- a/Model/Limpieza.cs +++ b/Model/Limpieza.cs @@ -63,6 +63,8 @@ namespace OliviaAddInPro.Model { ProceSrv.ConfigConex(); res2 = ProceSrv.start(LanzaSrv.str_cfg, ProgrSrc._ProgrSrc); + if(!LanzaSrv.EsperaProcess(GeneralDef.NombOlvTasks)) + res2.Error.Add("No se ha podido cerrar oliviaTask."); } } if (res.HasError) diff --git a/Model/Recogida.cs b/Model/Recogida.cs index 02bf0b4..46ac55b 100644 --- a/Model/Recogida.cs +++ b/Model/Recogida.cs @@ -89,6 +89,8 @@ namespace OliviaAddInPro.Model { ProceSrv.ConfigConex(); res2 = ProceSrv.start(LanzaSrv.str_cfg, ProgrSrc._ProgrSrc); + if (!LanzaSrv.EsperaProcess(GeneralDef.NombOlvTasks)) + res2.Error.Add("No se ha podido cerrar oliviaTask."); } } if (res.HasError) diff --git a/Services/EjecServ.cs b/Services/EjecServ.cs index 824193c..7886aa5 100644 --- a/Services/EjecServ.cs +++ b/Services/EjecServ.cs @@ -101,7 +101,7 @@ namespace OliviaAddInPro.Services //Guarda el nombre OliviaGlob.Paths.PathData = OliviaGlob.Paths.DirData + com.NombreShpExport; - com.ProgrSrc.IncMessage(50, "Preparando exportación de red navegable"); + com.ProgrSrc.IncMessage(10, "Preparando exportación de red navegable");//50% //hace intersecciones espaciales en caso de ámbitos lineales para quitar los que tienen más parte fuera de la zona que dentro //REVISAR @@ -199,12 +199,12 @@ namespace OliviaAddInPro.Services return false; } - com.ProgrSrc.IncMessage(60, "Exportando red navegable"); + com.ProgrSrc.IncMessage(10, "Exportando red navegable");//60% //Prepara nombre de exportación com.NombreShpExportNw = prefNameExportNw + fechaHora + extShp; //exporta los datos de entrada - if (!HelperGdb.ExportShp2(OliviaGlob.Paths.PathGdbNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc,40)) + if (!HelperGdb.ExportShp2(OliviaGlob.Paths.PathGdbNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc,100)) { ErrStr = "Error al exportar la red navegable: " + HelperGdb.OutStr; return false; diff --git a/Services/LanzaSrv/LanzaOlvServ.cs b/Services/LanzaSrv/LanzaOlvServ.cs index 0726c05..7ddbf6f 100644 --- a/Services/LanzaSrv/LanzaOlvServ.cs +++ b/Services/LanzaSrv/LanzaOlvServ.cs @@ -184,13 +184,13 @@ namespace OliviaAddInPro.Services.LanzaSrv * Comprueba si OliviaTask ha salido y le espera durante T seg. Si no, para la tarea * return true si ha terminado, false si no */ - private bool EsperaProcess(string nombproc) + public bool EsperaProcess(string nombproc) { bool esta_geo = true; Process[] pg; - //le da 3 seg de margen para que se cierre - pg = Is_process(nombproc, 1, false); + //le da 5 seg de margen para que se cierre + pg = Is_process(nombproc, 5, false); esta_geo = (pg != null); if (esta_geo) diff --git a/Services/ProcesoEjecServ.cs b/Services/ProcesoEjecServ.cs index 40edf22..41d933b 100644 --- a/Services/ProcesoEjecServ.cs +++ b/Services/ProcesoEjecServ.cs @@ -54,7 +54,18 @@ namespace OliviaAddInPro.Services public Respuesta start(string cfg, IprocessManager cps) { this.cps = cps; - soc = new Cstr_socket(); + + try + { + soc = new Cstr_socket(); + } + catch + + { + var resp = new Respuesta() { Value = TiposEjecucion.FinEjecNOk }; + resp.Error.Add("Error al crear conexión con olivia task (no se pudo crear socket)"); + return resp; + } str_cfg = cfg; /* @@ -62,7 +73,16 @@ namespace OliviaAddInPro.Services { run(); };*/ - return run(); + var res = run(); + try + { + soc.termina(); + } + catch + { + res.Error.Add("Error al cerrar la conexion con olivia task (no se pudo cerrar el socket)"); + } + return res; } private Respuesta run() { @@ -74,6 +94,7 @@ namespace OliviaAddInPro.Services int lastprog = 0; var res = new Respuesta() { Value = TiposEjecucion.FinEjecNOk }; cps.SetProceso("Procesando Datos"); + cps.SetProgress(0); try { do @@ -113,6 +134,7 @@ namespace OliviaAddInPro.Services { cancela_permu = false; } + res.Error.Add("Proceso Cancelado por el usuario"); } else if (!first_send_cfg && ((Math.Abs(Environment.TickCount) - lastprog) >= m_tm_progr) && !fin) //en caso normal, todo va bien, pide el progreso y la tarea {