Example #1
0
        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);
            }
        }
Example #2
0
        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());
            }
        }