CSPromex
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Programadores dedicados a C sharp .Net, eres nuevo, experto o quieres aprender a programar en C Sharp, aquí encontraras todo lo que necesitas.
 
ÍndiceBuscarÚltimas imágenesChatRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
» Sockets Conexion,Envio y recepcion de datos (mini-chat Cliente-Servidor)
Bloqueo de Interfaz Grafica I_icon_minitimeSáb Sep 30, 2023 6:24 pm por EurekaMartin

» Graficos: Grafica circular
Bloqueo de Interfaz Grafica I_icon_minitimeMar Mar 05, 2019 4:58 pm por Luis Garcia

» Calendario hecho Manualmente
Bloqueo de Interfaz Grafica I_icon_minitimeMar Mar 05, 2019 3:52 pm por Luis Garcia

» Activar el protector de pantalla.
Bloqueo de Interfaz Grafica I_icon_minitimeMar Mar 05, 2019 3:12 pm por Luis Garcia

» Hacer backup de MySql desde C#
Bloqueo de Interfaz Grafica I_icon_minitimeMar Abr 18, 2017 10:04 pm por maurifl

» Sockets programa para Ciber Cafe (Cliente-Servidor)
Bloqueo de Interfaz Grafica I_icon_minitimeLun Ago 10, 2015 5:45 pm por artes

» Ayuda crear emoticones en un chat
Bloqueo de Interfaz Grafica I_icon_minitimeDom Jul 12, 2015 9:00 pm por yeco96

» Necesito ayuda para pasar datos a un Datagridview
Bloqueo de Interfaz Grafica I_icon_minitimeDom Jun 07, 2015 4:33 pm por rafaelfa

» Reproductor de música->Lista de reproducción (Guardar-Cargar)
Bloqueo de Interfaz Grafica I_icon_minitimeLun Jun 01, 2015 3:00 pm por kevin22

Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Síguenos:
Crear foro Crear foro Crear foro

 

 Bloqueo de Interfaz Grafica

Ir abajo 
2 participantes
AutorMensaje
pepebr27
Novato
pepebr27


Mensajes : 2
Puntos : 4

Bloqueo de Interfaz Grafica Empty
MensajeTema: Bloqueo de Interfaz Grafica   Bloqueo de Interfaz Grafica I_icon_minitimeSáb Abr 09, 2011 1:06 pm

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.
Volver arriba Ir abajo
Luis Garcia
STAFF TEAM
STAFF TEAM
Luis Garcia


Mensajes : 64
Puntos : 112

Bloqueo de Interfaz Grafica Empty
MensajeTema: Re: Bloqueo de Interfaz Grafica   Bloqueo de Interfaz Grafica I_icon_minitimeSáb Abr 09, 2011 1:36 pm

Creo que tu problema se solucionaría utilizando "threads" o hilos de proceso. Creo que lo que te sucede es que mientras esta ocurriendo el proceso de obtención de datos la interfaz gráfica se traba y eso es porque le interfaz es un proceso y si todo lo manejas en un solo hilo de proceso puede que se espere el repintado de la interfaz debido a que esta procesando la función que mandas a llamar.

Otra solución sería optimizar tu código verifica si tu código es lo mejor, tal vez tengas un problema de lógica, es decir si vas a recibir 1000 contratos realmente no cargues todos los contratos porque nadie se pone a ver 1000 contratos, mejor carga contratos de 10 en 10 paginando o separando (tal vez un filtro de datos), una búsqueda por contrato especifico sería más eficiente.
Volver arriba Ir abajo
pepebr27
Novato
pepebr27


Mensajes : 2
Puntos : 4

Bloqueo de Interfaz Grafica Empty
MensajeTema: Re: Bloqueo de Interfaz Grafica   Bloqueo de Interfaz Grafica I_icon_minitimeDom Abr 10, 2011 2:16 am

Luis Garcia escribió:
Creo que tu problema se solucionaría utilizando "threads" o hilos de proceso. Creo que lo que te sucede es que mientras esta ocurriendo el proceso de obtención de datos la interfaz gráfica se traba y eso es porque le interfaz es un proceso y si todo lo manejas en un solo hilo de proceso puede que se espere el repintado de la interfaz debido a que esta procesando la función que mandas a llamar.

Hola Luis, gracias por comentar, pues si eh estado pensando la idea de utilizar hilos y se que eso soluciona los problemas de la interfaz grafica, tambien optimize el codigo y el retardo es menor a 2 segundos es lo mejor que pude hacer con la optimizacion, la verdad no eh utilizado los hilos en c# y no se como implementarlos si lei que esa podria ser una solucion y trate de implementarlo pero falle, porque por ejemplo creo un hilo que llevara la funcion "grande" pero esa funcion tiene dentro otras funciones(y la funcion grande y subfunciones utilizan los controles de la forma) y no puedo captar bien lo que en verdad es el hilo, tambien intente usar un delegado cargando la funcion grande pero es el mismo problema el delegado no me permite paso de parametros...

Eh visto ejemplos de hilos y los puesto en practica pero son ejemplos muy sencillos donde un hilo no hace mas que operaciones aritmeticas o algo muy sencillo y eso lo comprendo, pero lo que me tiene bloqueado mentalmente es que si creo un thread con mi funcion de obtencion de datos, que pasa cuando este thread tenga que llamar a otras funciones o interactuar los controles de la forma...

Tambien eh pensado que lo estoy haciendo alreves, que deberia haber utilizado un BackGroundWorker para las tareas pesadas pero pues no tenia en mente este problema de querer poner una barrita de progreso mientras la interfaz estaba bloqueada, en fin yo creo que desistire mi idea de una barra de progreso por ahora, ya que por motivos de tiempo no puedo ponerme a cambiar muchas cosas :s y si tendre que darme un tiempo de leer mas sobre los hilos para evitarme problemas mas adelante Suspect
Volver arriba Ir abajo
Contenido patrocinado





Bloqueo de Interfaz Grafica Empty
MensajeTema: Re: Bloqueo de Interfaz Grafica   Bloqueo de Interfaz Grafica I_icon_minitime

Volver arriba Ir abajo
 
Bloqueo de Interfaz Grafica
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Graficos: Grafica circular
» Ayuda como conectar mysql con c utilizando la interfaz java!!!

Permisos de este foro:No puedes responder a temas en este foro.
CSPromex :: PROGRAMACIÓN EN C# :: Foro de ayuda-
Cambiar a: