Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación 
 
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.
 



 
última edición por razaAztk el Jueves, 04 Julio 2013, 01:32; editado 1 vez 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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:
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()



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
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 wait que tiene fondo transparente.

 wait

Ahora estoy viendo que existe el componente gb.Task, estoy leyendo su documentación a ver si me puede ayudar.

Gracias. Saludos!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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:

  Wait 0.1
  For i = 0 To FIN_1
    For j = 0 To FIN_2
      ...
        While cola.Length
          ...
            For dx = -1 To 1
              For dy = -1 To 1
                ...
              Next
            Next
          Endif
        Wend
        ...
    Next
    If Not (i % 25) Then Wait '' Esta línea es la importante; sólo actualizo eventos un número reducido de veces
  Next
 


Saludos!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación 
 
Application.Busy debería ser la solución.
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación 
 
razaAztk escribió: [Ver mensaje]
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:


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.
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Sé Cómo Indicarle Al Usuario Que Espere A Que Termine Una Operación 
 
sebikul escribió: [Ver mensaje]
Application.Busy debería ser la solució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!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿Como Puedo Hacer Que El Programa "s... 4octavio4 General 4 Domingo, 10 Enero 2010, 16:51 Ver último mensaje
4octavio4
No hay nuevos mensajes Problema Con Operación Matemática [Soluc... Shell General 2 Viernes, 31 Octobre 2014, 00:39 Ver último mensaje
Shell
No hay nuevos mensajes ¿ Cómo Hacer Que Guste Linux Al Usuario ? Shell Mundo Linux 21 Sabado, 05 Marzo 2016, 15:51 Ver último mensaje
codificador
No hay nuevos mensajes Cómo Conseguir Que Un Usuario Sin Permiso... shordi Shell Scripting 4 Jueves, 17 Noviembre 2016, 19:38 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron