|
Página 1 de 1
|
Autor |
Mensaje |
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Event Loop
Hola amigos,
buscando en la documentación de gambas, me he encontrado con algo que se llama Event Loop. Cuando estamos en medio de un bucle que lleva mucho tiempo resolver, el usuario puede tener ocasión de pulsar varios botones, lo cual activa varios eventos. Mi duda es dónde se guarda el orden de estos eventos, y cómo podemos anular uno de ellos, el que queramos. He hecho un pequeño programita de prueba. Tiene tres botones y un value box. Si se pulsa en el botón comenzar, cuenta de 0 hasta 20000. Si se pulsa, y cuando va por ejemplo por 3000, se vuelve a pulsar, tenemos entonces dos eventos. El primer evento queda entonces en suspenso, se inicia el segundo evento, y cuando éste alcanza los 20000, se retoma el prmer evento allí donde se quedó, en 3000, y lo remata hasta llegar a sus 20000. Para parar los dos eventos, habría que pulsar también el mismo número de veces en el botón parar.
No entiendo cómo funciona esto, y cómo podríamos parar el primer evento sin parar el segundo. Y quien dice dos eventos dice varios.
Dejo aquí también el programa comprimido.
Gracias
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop.zip |
Tamaño: |
7.67 KB |
Descargado: |
20 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop.zip |
Tamaño: |
7.67 KB |
Descargado: |
20 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop.zip |
Tamaño: |
7.67 KB |
Descargado: |
20 veces |
última edición por Alaplancha el Domingo, 11 May 2014, 06:32; editado 1 vez
|
#1 Sabado, 10 May 2014, 20:03 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Event Loop
Hola Alaplancha.
No se si para esto es mejor usar un Timer.
Si le das al botón salir en algunos momentos, produce objeto invalido.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Domingo, 11 May 2014, 08:32 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Event Loop
gambas no maneja hilos, pero puede usar procesos separados. Aunque nunca lo he usado, existe una clase llamada Task (tarea) que puede servir para lo que necesitas:
http://foro.gambas-es.org/viewtopic.php?f=1&t=2562
http://gambaswiki.org/wiki/comp/gb/task
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Domingo, 11 May 2014, 09:05 |
|
|
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Re: Event Loop
Hola Shell y jguardon,
gracias a los dos por responder. La verdad es que este asunto es un poco difícil para mis conocimientos. Con respecto a la clase Task no encuentro ningún ejemplo... Con respecto al objeto inválido, Shell, también me había dado cuenta, pero no sé muy bien por qué ocurre. El Wait debe de hacer algo que hace saltar ese mensaje si salimos antes de que acaben de ejecutarse todos los eventos encolados.
He conseguido de un modo poco elegante anular el evento más reciente y que siga ejecutándose el más antiguo. Una variable EstoyEjecutandome controla si hay un evento que esté ya ejecutándose, y en ese caso provoca un return del proceso más reciente.
He hecho un tercer programilla donde se puede activar o desactivar el asunto del Wait. EventLoop3.
Pero lo que no consigo es anular el evento más antiguo y que se ejecute sólamente el más reciente.
Por cierto, estoy llamando a este hilo Event Loop y no sé si es eso. Event Loop
Gracias
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop3.zip |
Tamaño: |
8.21 KB |
Descargado: |
28 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop3.zip |
Tamaño: |
8.21 KB |
Descargado: |
28 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
EventLoop3.zip |
Tamaño: |
8.21 KB |
Descargado: |
28 veces |
última edición por Alaplancha el Domingo, 11 May 2014, 17:57; editado 2 veces
|
#4 Domingo, 11 May 2014, 17:55 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Event Loop
Alaplancha:
Citar: Con respecto a la clase Task no encuentro ningún ejemplo...
Jguardon publico en este hilo http://foro.gambas-es.org/viewtopic...&highlight=task, un ejemplo del uso de gb.task
Saludos
Nota:
Lo he vuelto a subir, porque me ha dado error en la descarga en la direccion que te he dicho del foro.
Descripción: |
Resubido, del hilo http://gambas.8142.n7.nabble.com/gb-task-and-the-event-loop-td40511.html |
Descargar |
Nombre del archivo: |
TaskTest.zip |
Tamaño: |
7.45 KB |
Descargado: |
19 veces |
Descripción: |
Resubido, del hilo http://gambas.8142.n7.nabble.com/gb-task-and-the-event-loop-td40511.html |
Descargar |
Nombre del archivo: |
TaskTest.zip |
Tamaño: |
7.45 KB |
Descargado: |
19 veces |
Descripción: |
Resubido, del hilo http://gambas.8142.n7.nabble.com/gb-task-and-the-event-loop-td40511.html |
Descargar |
Nombre del archivo: |
TaskTest.zip |
Tamaño: |
7.45 KB |
Descargado: |
19 veces |
última edición por jsbsan el Domingo, 11 May 2014, 20:23; editado 2 veces
|
#5 Domingo, 11 May 2014, 20:19 |
|
|
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Re: Event Loop
Hola jsbsan,
gracias por el enlace y el ejemplo.
Saludos
|
#6 Lunes, 12 May 2014, 06:47 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|