![]() |
¿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? |
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á. |
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. |
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í:
|
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.
|
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.
|
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,...) |
La franja horaria es GMT +2. Ahora son las 20:12:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi