Que tal hoy acabo de descubrir su foro y despues de darle una vista a los post no vi algo que me ayudara con una situacion que tengo y si las expondre aver si es posible su solucion.
Estoy haciendo un programa que en la base de datos (MySql) tiene la informacion de contratos, clientes etc etc y tengo una funcion que se llama "ObtenerInfoContratos(int numero de contrato)" esta funcion es algo asi como enorme porque dentro de ella se llama a la base de datos y obtiene cierta informacion y llama a otras funciones que a su ves llaman a la base, en pocas palabras es algo asi como la funcion principal para recopilar todo lo que nesesito saber de un contrato que tiene muchos apartados, el punto es que es una funcion grande que tarda en ejecutarse y que a su ves llama a otra funciones que son algo tardadas, tardado para mi son como 2-3 segundos aprox, ahora esta es la situacion cuando entra a esa funcion se bloquea la interfaz grafica y solo hasta que termina me muentra toda la informacion, pero como aveces la conexion a internet es lenta esa consulta podria llegar a tardar mas y yo quiero mostrar una barra de progreso mientras se esta ejecutando esa funcion, hice una forma que solo tuviera la barra y se moviera continuamente, la mando a llamar antes de la funcion grande y la termino despues pero si lo hago con .ShowDialog() obviamente no hara nada hasta que cierre la forma, y si lo hago con .Show() se muestra el dialogo pero no se ven nisiquiera los controles de hecho donde esta el label y el progressbar se ve tranparente, investigue y es porque al entrar a la funcion grande el programa no respondera al repintado hasta que salga de ella, intente hacerlo con backgroundWorker con un progress bar en la forma proncipal pero es lo mismo, si me muestra la barra moviendose pero al momento de entrar a la funcion se detiene y al terminar sigue avanzandos, tambien lo intente con DoEvents() pero no pasa nada, el problema radica en el GUI porque la forma principal tiene el control de la intefaz grafica y al estar dentro la funcion grande como que se bloquea y yo estaba pensando si hay alguna forma de pasarle el control de la interfaz grafiaca a una forma modal para ver la barrita moviendose y ya cuando termine regresarle el control a la forma principal, o si alguien tiene alguna idea de como moviendose mientras se ejecuta la funcion grande sera bien aceptada cabe mencionar que con el backgroundWorker si me incrementa el valor del progress bar pero lo repinta solo cuando se termina la funcion grande.
Bueno eso fue mucha escritrura si alguien en sus ratos de ocio lo lee y tiene una idea pues se les agradece su tiempo, hasta luego.