Que tal compañeros.
Verán, tengo una aplicación en la que hago una operación que tarda mucho tiempo y pareciese que la aplicación se quedase "colgada". Una idea que tuve fue que mientras la operación se estuviera efectuando presentar una animación, pero incluso esa animación se queda pasmada.
Algún consejo para evitar ese feeling de que la aplicación está colgada?
Gracias. Saludos!
Edito:
Se me olvidó dar datos de mi sistema.
Es un programa en gambas3, en un SO Ubuntu 12.04......... y la operación es un método privado de una clase que creé, en dicho método itero sobre cada pixel de una imágen y ejecuto operaciones matematicas.
No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Subject: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Last edited by razaAztk on Thursday, 04 July 2013, 01:32; edited 1 time in total
Last edited by razaAztk on Thursday, 04 July 2013, 01:32; edited 1 time in total
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
¿Que tal una barra de progreso lenta? ¿O un label que diga "Ejecutando proceso, por favor espere ...o aproveche para ir al baño"?
¿Qué tantos segundos o minutos lleva el proceso?
Saludos
¿Qué tantos segundos o minutos lleva el proceso?
Saludos
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Tengo algo que te servirá:
Se trata de un formulario "FormPensando" con un picture animado (.gif ) de un reloj (como los que aparece en Android) y un texto "Espere por favor....".
Descarga:
https://constructordiploma.googleco...rmPensando.form
https://constructordiploma.googleco...mPensando.class
icono que uso:
https://code.google.com/p/construct.../icoLoading.gif
Este es llamado desde donde lo necesites:
Si quieres ver algunos programas que lo usa, te los puedes descargar desde:
http://constructordiploma.blogspot.com.es/p/descargar.html
http://creadordeorlas.blogspot.com.es/p/descargar.html
http://generadorcarnets.blogspot.com.es/p/descargar.html
Se trata de un formulario "FormPensando" con un picture animado (.gif ) de un reloj (como los que aparece en Android) y un texto "Espere por favor....".
Descarga:
https://constructordiploma.googleco...rmPensando.form
https://constructordiploma.googleco...mPensando.class
icono que uso:
https://code.google.com/p/construct.../icoLoading.gif
Este es llamado desde donde lo necesites:
Dim pensando As New FormPensando
pensando.Show()
Wait 0.5 'se necesita un cierto retardo para que se muestre el formulario...
'empieza tu codigo de calcular o que tarde mucho tiempo.... mientras el usuario ve el mensaje+icono reloj del formulario
....
....
'cuando hayas terminado de calcular, cerramos el formulario:
pensando.parar = True
pensando.Delete()
pensando.Show()
Wait 0.5 'se necesita un cierto retardo para que se muestre el formulario...
'empieza tu codigo de calcular o que tarde mucho tiempo.... mientras el usuario ve el mensaje+icono reloj del formulario
....
....
'cuando hayas terminado de calcular, cerramos el formulario:
pensando.parar = True
pensando.Delete()
Si quieres ver algunos programas que lo usa, te los puedes descargar desde:
http://constructordiploma.blogspot.com.es/p/descargar.html
http://creadordeorlas.blogspot.com.es/p/descargar.html
http://generadorcarnets.blogspot.com.es/p/descargar.html
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Gracias por su respuestas.
Dani26, la operación demora como un par de segundos. Aunque el problema no es como presentar que el usuario espere, más bien es que mientras se realiza la operación todo pareciera que se queda parado (incluyendo una posible barra o animación)....... esperaba que me recomendaran algún recurso para programar tareas paralelas o algo así.
Jsbsan, de hecho algo parecido a tu aporte tengo implementado, igual con el Wait; pero cuando termina el tiempo del Wait la animación igual se sigue quedando parada. Por cierto yo de animación estoy usando que tiene fondo transparente.
Ahora estoy viendo que existe el componente gb.Task, estoy leyendo su documentación a ver si me puede ayudar.
Gracias. Saludos!
Dani26, la operación demora como un par de segundos. Aunque el problema no es como presentar que el usuario espere, más bien es que mientras se realiza la operación todo pareciera que se queda parado (incluyendo una posible barra o animación)....... esperaba que me recomendaran algún recurso para programar tareas paralelas o algo así.
Jsbsan, de hecho algo parecido a tu aporte tengo implementado, igual con el Wait; pero cuando termina el tiempo del Wait la animación igual se sigue quedando parada. Por cierto yo de animación estoy usando que tiene fondo transparente.
Ahora estoy viendo que existe el componente gb.Task, estoy leyendo su documentación a ver si me puede ayudar.
Gracias. Saludos!
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Bueno, con la idea de usar Task ya no seguí porque parece ser que es algo equivalente a como si ejecutaras una segunda aplicación gambas con una instrucción Exec con la cual sólo te puedes comunicar con la I/O standard, por lo que sólo puedes usar Strings. Ver:
[0] http://www.gambasdoc.org/help/comp/gb/task?v3
[1] http://comments.gmane.org/gmane.comp.lang.gambas.user/20536
[2] http://www.mail-archive.com/gambas-...t/msg22064.html
Pero en cambio, gracias a [2], si incluyo una sentencia Wait (ver [3]) en un loop donde está la mayor carga de trabajo en mi clase, la animación (y cualquier otra evento pendiente) se actualiza y ya no se ve como trabada.
[3] http://gambasdoc.org/help/lang/wait?show&v3
Bueno de hecho yo tengo un montón de loops anidados, y para no estar actualizando cada rato y eso me consuma mucho tiempo de ejecución, hice algo como:
Saludos!
[0] http://www.gambasdoc.org/help/comp/gb/task?v3
[1] http://comments.gmane.org/gmane.comp.lang.gambas.user/20536
[2] http://www.mail-archive.com/gambas-...t/msg22064.html
Pero en cambio, gracias a [2], si incluyo una sentencia Wait (ver [3]) en un loop donde está la mayor carga de trabajo en mi clase, la animación (y cualquier otra evento pendiente) se actualiza y ya no se ve como trabada.
[3] http://gambasdoc.org/help/lang/wait?show&v3
Bueno de hecho yo tengo un montón de loops anidados, y para no estar actualizando cada rato y eso me consuma mucho tiempo de ejecución, hice algo como:
Saludos!
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Application.Busy debería ser la solución.
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Esto no es verdad. Con una instancia Task tienes mas control sobre la tarea que se esta ejecutando, y es perfectamente posible enviar Arrays o Collections serializandolos, cosa que con Write es automatica.
razaAztk escribió: [Ver mensaje]
Esto no es verdad. Con una instancia Task tienes mas control sobre la tarea que se esta ejecutando, y es perfectamente posible enviar Arrays o Collections serializandolos, cosa que con Write es automatica.
Subject: Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Ok, gracias. Es lo que usaré.
Acerca de lo que me comentas sobre los arrays, bueno ya será en otra ocación en que estudie eso. Te agradezco la info.
Saludos!
sebikul escribió: [Ver mensaje]
Ok, gracias. Es lo que usaré.
Acerca de lo que me comentas sobre los arrays, bueno ya será en otra ocación en que estudie eso. Te agradezco la info.
Saludos!
Page 1 of 1
You cannot post new topicsYou cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events
This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Generation Time: 0.1079s (PHP: -26% SQL: 126%)
SQL queries: 24 - Debug Off - GZIP Enabled