예제 #1
0
        protected void GuardarButton_Click(object sender, EventArgs e)
        {
            AnalisisRepositorio repositorio = new AnalisisRepositorio();
            Analisis            analisis    = repositorio.Buscar(Utils.ToInt(idTextBox.Text));


            if (analisis == null)
            {
                if (repositorio.Guardar(LlenaClase()))
                {
                    Utils.ShowToastr(this.Page, "Guardado con exito!!", "Guardado", "success");
                    Limpiar();
                }
                else
                {
                    Utils.ShowToastr(this.Page, "Revisar todos los campo", "Error", "error");
                    Limpiar();
                }
            }
            else
            {
                if (repositorio.Modificar(LlenaClase()))
                {
                    Utils.ShowToastr(this.Page, "Modificado con exito!!", "Guardado", "success");
                    Limpiar();
                }
                else
                {
                    Utils.ShowToastr(this.Page, "Revisar todos los campo", "Error", "error");
                    Limpiar();
                }
            }
        }
 /// <summary>
 /// Inicia la verificación de nuevos elementos para que sean incluidos en la cola y posteriormente procesados
 /// </summary>
 private void GestionarCola()
 {
     if (!bgWorker.IsBusy && !queue.Any())
     {
         try
         {
             using (repositorio = new AnalisisRepositorio())
             {
                 Post[] posts = repositorio.ConsultarPostAnalizar();
                 if (posts.Any())
                 {
                     foreach (var post in posts)
                     {
                         // Cargar elemento a la cola si no existe. Es posible que esté pendiente por procesamiento
                         if (!queue.Where(p => p.Id == p.Id).Any())
                         {
                             queue.Enqueue(post);
                         }
                     }
                 }
             }
         }
         catch
         {
             // Incluir la captura de error:
         }
     }
 }
        /// <summary>
        /// Se crea el método para ejecutar un task y evitar bloqueos en IO
        /// </summary>
        public int CrearPost(Post post)
        {
            int retorno;

            using (AnalisisRepositorio repositorio = new AnalisisRepositorio())
            {
                retorno = repositorio.CrearPost(post);
            }
            // Controlar error en la creación del post:
            if (retorno == 0)
            {
                throw new Exception();
            }

            return(retorno);
        }
 /// <summary>
 /// Permite invocar el procesamiento del post
 /// </summary>
 private Task ProcesarPost(Post post)
 {
     return(Task.Factory.StartNew(() =>
     {
         try
         {
             repositorio = new AnalisisRepositorio();
             if (!Equals(post, null))
             {
                 // Actualizar el elemento para evitar reproceso fuera de la cola:
                 repositorio.ActualizarEstadoPost(post.Id, EstadoAnalisis.EnAnalisis);
                 // Elemento de envío:
                 post = Utiles.AnalizarPost(post);
                 // Procesado con éxito:
                 repositorio.ActualizarEstadoPost(post.Id, EstadoAnalisis.Analizado);
             }
         }
         catch
         {
             repositorio.ActualizarEstadoPost(post.Id, EstadoAnalisis.Error);
         }
     }));
 }