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); } })); }