public void Ejecutar() { //Ejecuta procesa _Vértices y _Rupturas para obtener _ResTriangulación try { _Estado = TriangulacionMultiProceso.Estado.EnEjecucion; _logProceso.ActualizaProcessLog(OnThread); _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Procesa la Triangulación.")); ITriangulador Triangulador = Triangulacion.GetNewTriangulador(_tipoTriangulado); //Calcula Triangulación _ResTriangulacion.Resultado = Triangulador.Triangular(_ResTriangulacion.Seccion.TrianguloSeccion.ToPoligono(), _rupturas, _vertices); _Estado = TriangulacionMultiProceso.Estado.Terminado; } catch (System.Threading.ThreadAbortException) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Informacion, "Proceso abortado.")); _Error = new Exception("Subproceso de triangulación abortado."); _Estado = TriangulacionMultiProceso.Estado.Detenido; System.Threading.Thread.ResetAbort(); } catch (Exception sysEx) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Error, sysEx.ToString())); _Error = sysEx; _Estado = TriangulacionMultiProceso.Estado.ConErrores; } finally { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Procesa la Triangulación.")); //Lanzar evento Filanlizado?.Invoke(this, EventArgs.Empty); } }
public void Ejecutar() { //Ejecuta el merge de las dos triangulaciones try { _Estado = TriangulacionMultiProceso.Estado.EnEjecucion; _logProceso.ActualizaProcessLog(OnThread); _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Procesa el Merge.")); ITriangulador Triangulador = Triangulacion.GetNewMerge(_tipoTriangulado); //Calcula Merge _ResTriangulacion.Resultado = Triangulador.Merge(_triangulacion1, _triangulacion2); _Estado = TriangulacionMultiProceso.Estado.Terminado; } catch (System.Threading.ThreadAbortException) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Informacion, "Proceso abortado.")); _Error = new Exception("Subproceso de merge abortado."); _Estado = TriangulacionMultiProceso.Estado.Detenido; System.Threading.Thread.ResetAbort(); } catch (Exception sysEx) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Error, sysEx.ToString())); _Error = sysEx; _Estado = TriangulacionMultiProceso.Estado.ConErrores; } finally { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Procesa el Merge.")); //Lanza evento Filanlizado?.Invoke(this, new EventArgs()); } }