![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Register | FAQ | Members List | Calendar | Guía de estilo | Search | Today's Posts | Mark Forums Read |
![]() |
|
|
Thread Tools | Search this Thread | Display Modes |
|
#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. Last edited by Neftali [Germán.Estévez] : 19/09/2023 at 13:32. |
|
#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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Además de lo dicho y fijándome en este código:
Quote:
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. |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| ¿Cómo evitar que una DLL se ejecute antes que cualquier otra cosa de mi programa? | dec | Varios | 89 | 21/11/2016 10:08 |
| evitar cuelge de mi programa | martinchooozzz | Varios | 6 | 07/10/2008 01:03 |
| evitar colgado de programa | vivamotos | C++ Builder | 3 | 12/02/2007 17:16 |
| Como evitar 2 instancias de mi programa | pcicom | Lazarus, FreePascal, Kylix, etc. | 3 | 03/10/2006 19:53 |
| Evitar que se congele mi aplicación!! | acertij022 | Varios | 5 | 23/01/2006 22:19 |
|