FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Cómo evitar que programa se congele?
Buen día compañeros, tengo una aplicación donde paso la información de un XML a base de datos, el proceso tardara dependiendo la cantidad de xml, lo que busco es como evitar que el usuario se desespere y le empiece a dar clic y por ende el programa se congele (No responde)
Ya puse un contador así que busco alguna opción como deshabilitar la forma o que el hacerle clics no le afecte, ¿Cómo puedo hacer esto? |
#2
|
||||
|
||||
Es una pregunta demasiado genérica (o a la forma de explicar el proceso le faltan detalles).
Dependiendo de cómo esté programado el proceso de pasar los datos del XML a la Base de Datos, las soluciones pueden ser diferentes. Por ejemplo, si la importación es por pasos, (donde puedas interferir durante el proceso) puedes usar ProcessMessages y una barra de estado o mensajes. Si el proceso es "compacto" y no puedes intervenir puedes evaluar usar threads, para mostrar también una barra de progreso (sin fin) o una animación. Puede haber más y mejores que estas 2, pero sin más detalles es difícil saber qué opción es la que te conviene o la que te funcionará.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
A nivel práctico, lo que comenta Neftalí sería:
Yo suelo poner un panel con labels, memos para logs y barras de progreso que hago visible tapando o invisibilizando los otros paneles de la aplicación. Última edición por Neftali [Germán.Estévez] fecha: 19-09-2023 a las 13:32:18. |
#4
|
||||
|
||||
Gracias por sus comentarios, explicare mejor la situación:
Pasar un XML a la base de datos me demora 0.1 - 0.2 segundos c/u el problema viene cuando son por ejemplo 7k XML, pues tardaremos como 10 minutos aprox, entonces necesito "congelar" o hacer algo para que el usuario no este dándole clic al sistema y que este cuelgue Tengo un ciclo mas o menos así:
|
#5
|
||||
|
||||
Entiendo que FormaMesaje es un Form que contiene un label en el que muestras el progreso.
Solo debes cambiar esta línea.
A veces, el procesar los mensajes de Windows incorpora una demora grande por lo que quizás quieras realizar este proceso cada n pasadas.
|
#6
|
||||
|
||||
Justo lo que te han contestado
De toda formas, también puedes deshabilitar el botón cuando lo pulsen, así no podrán darle más veces.
|
#7
|
||||
|
||||
Además de lo dicho y fijándome en este código:
Cita:
Yo añadiría lo siguiente:
Puede mejorar dependiendo de los componentes visuales que tengas asociados al Dataset (si los tienes). Lo mismo con otros que tengas asociados a componentes visuales (Grids,...)
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Cómo evitar que una DLL se ejecute antes que cualquier otra cosa de mi programa? | dec | Varios | 89 | 21-11-2016 10:08:01 |
evitar cuelge de mi programa | martinchooozzz | Varios | 6 | 07-10-2008 01:03:42 |
evitar colgado de programa | vivamotos | C++ Builder | 3 | 12-02-2007 17:16:59 |
Como evitar 2 instancias de mi programa | pcicom | Lazarus, FreePascal, Kylix, etc. | 3 | 03-10-2006 19:53:45 |
Evitar que se congele mi aplicación!! | acertij022 | Varios | 5 | 23-01-2006 22:19:47 |
|