Ocupar un progressbar C# en una petición de base de datos

Octavio Fco. Mtz. Carrión 5 Puntos de reputación
2024-01-10T20:55:23.3966667+00:00

Hola tengo el siguiente código que hace referencia a una petición a una base de datos, me gustaría poner un progreesbar que vaya de forma sincronizada con la petición cuando inicia y termina. He intentado algunas cosas pero honestamente no he logrado el objetivo, gracias por su ayuda.

   public void Hilo_Buscar_Colaborador()
   {     
       try
       {              
           using (MySqlConnection conexion = ConexionBD.ObtenerConexion())
           {
               using (MySqlCommand comando = new MySqlCommand(("NexusRH_Obtener_Colaborador"), conexion))
               {
                   comando.CommandType = CommandType.StoredProcedure;
                   comando.CommandTimeout = 0;
                   comando.Parameters.AddWithValue("_Numero_de_Colaborador",   TxtBuscarNumeroDeColaboradorRH.Text.Trim());

                   using (MySqlDataReader ObtenerDatos = comando.ExecuteReader())
                   {
                       if (ObtenerDatos.Read() == true)
                       {                              
                           VariablesCompartidas.IndiceDeColaborador = Convert.ToInt32(ObtenerDatos["INDICE"].ToString());
                           Invoke(new Action(() =>
                           {
                               TxtApellidoMaterno.Text = ObtenerDatos["Apellido_Materno"].ToString();
                               TxtApellidoPaterno.Text = ObtenerDatos["Apellido_Paterno"].ToString();
                               TxtBase.Text = ObtenerDatos["Base"].ToString();
                               TxtCalle.Text = ObtenerDatos["Calle"].ToString();
                               TxtCEApellidoMaterno.Text = ObtenerDatos["CEmergencia_Apellido_Materno"].ToString();
                               TxtCEApellidoPaterno.Text = ObtenerDatos["CEmergencia_Apellido_Paterno"].ToString();
                               TxtCENombres.Text = ObtenerDatos["CEmergencia_Nombre"].ToString();
                               TxtColonia.Text = ObtenerDatos["Colonia"].ToString();
                               TxtCorreoElectronico.Text = ObtenerDatos["Correo_Electronico"].ToString();
                               TxtCiudad.Text = ObtenerDatos["Ciudad"].ToString();
                               TxtDepartamento.Text = ObtenerDatos["Departamento"].ToString();
                               TxtEdad.Text = ObtenerDatos["Edad"].ToString();
                               TxtEdificio.Text = ObtenerDatos["Edificio"].ToString();
                               TxtEstado.Text = ObtenerDatos["Estado"].ToString();
                               TxtEstadoCivil.Text = ObtenerDatos["Estado_Civil"].ToString();
                               DatePickerFecha.Text = ObtenerDatos["Fecha"].ToString();
                               if (ObtenerDatos["Foto"] == DBNull.Value)//BASE DE DATOS VACIO
                               {
                               }
                               else
                               {
                                   byte[] imagen = (byte[])ObtenerDatos["Foto"];
                                   PictureBoxColaborador.Image = byteArrayToImage(imagen);//CLAVE 4004 TIENE UN METODO ARRIBA QUE SE LLAMA BYTEARRAYTOIMAGE BUSCALO ARRIBA
                               }

                               TxtJefeInmediato.Text = ObtenerDatos["Jefe_Inmediato"].ToString();
                               TxtLote.Text = ObtenerDatos["Lote"].ToString();
                               TxtManzana.Text = ObtenerDatos["Manzana"].ToString();
                               TxtMovil.Text = ObtenerDatos["Movil"].ToString();
                               TxtCEMovil.Text = ObtenerDatos["Movil_Emergencia"].ToString();
                               TxtCEFijo.Text = ObtenerDatos["Movil_Emergencia_Fijo"].ToString();
                               TxtMovilFijo.Text = ObtenerDatos["Movil_Fijo"].ToString();
                               TxtNacionalidad.Text = ObtenerDatos["Nacionalidad"].ToString();
                               TxtNombreColaborador.Text = ObtenerDatos["Nombre"].ToString();
                               TxtNdeColaborador.Text = ObtenerDatos["Numero_de_Colaborador"].ToString();
                               TxtNumeroExterior.Text = ObtenerDatos["Numero_Exterior"].ToString();
                               TxtNumeroInterior.Text = ObtenerDatos["Numero_Interior"].ToString();
                               TxtPais.Text = ObtenerDatos["Pais"].ToString();
                               TxtCEParentesco.Text = ObtenerDatos["Parentesco"].ToString();
                               TxtProceso.Text = ObtenerDatos["Proceso"].ToString();
                               TxtPuesto.Text = ObtenerDatos["Puesto"].ToString();
                               ComboBoxTipoDeSangre.Text = ObtenerDatos["Tipo_de_Sangre"].ToString();
                           }));
                       }
                       else
                       {
                           MessageBox.Show("EL NUMERO DE COLABORADOR " + TxtBuscarNumeroDeColaboradorRH.Text.Trim() + " NO SE ENCONTRO");
                       }
                   }
                   conexion.Close();

               }//COMANDO
           }//CONEXION
       }
       catch (Exception ex)
       {
           Console.WriteLine(ex.ToString());
       }
   }
Preguntas y respuestas (Q&A) de Microsoft
Preguntas y respuestas (Q&A) de Microsoft
Use esta etiqueta para compartir sugerencias, solicitudes de características y errores con el equipo de Microsoft Q&A. El equipo de Microsoft Q&A evaluará sus comentarios periódicamente y proporcionará actualizaciones a lo largo del proceso.
358 preguntas
{count} voto

1 respuesta

Ordenar por: Muy útil
  1. José Pablo Ramirez (a. k. a. webJose) 440 Puntos de reputación
    2024-01-21T22:50:22.5666667+00:00

    Basado en la conversación, asumo que dejaremos lo siguiente como respuesta: Una barra de progreso no es el elemento correcto pues solamente funciona cuando pueden definirse y comprobarse pasos intermedios. Como el progreso de la actualización de un dato en base de datos está oculto a la aplicación que la solicita, lo correcto es usar un "spinner" o un mensaje de espera y no una barra de progreso.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.