Autor
|
Tema: ¿que técnica asíncrona debo usar? (Leído 2,921 veces)
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Bueno, el tema es que tengo un programa en visual basic que para funcionar tiene que ejecutar un "main loop" constantemente, en el loop se envían señales a otros formularios que son con los que interactua el usuario. El timer se me quedó corto así que busqué maneras más rápidas de ejecutar el main loop, comencé a reprogramarlo en modo consola con dos while anidados y usando un tickcounter para que el ciclo sea sincronizado. La velocidad es como 100 veces más rápida, pero ahora tengo un problema.
Al instanciar un formulario desde el main loop y mostrarlo éste parece estar todo el tiempo en espera (cargando, con el relogito) y aunque recibe las órdenes que le llegan del main loop no dispara sus eventos correctamente. Parece ser que no puedo hacerlo en un solo hilo, así que supongo que habrá una manera de hacer correr el formulario en otro. He leido sobre los métodos asíncronos en visualbasic.net, y veo que hay formas diferentes de hacerlo, algunas me sirven y otras no. El tema es que necesito mucha velocidad, porque los mensajes que recibe el form se traducen en ordenes gdi para dibujar objetos, pero a la vez no quiero cuellos de botella ni parones mientras el main loop está en espera.
¿Teneis alguna idea de por dónde tirar? ¿qué tipo de método asíncrono me garantiza que los dos hilos corran bien y puedan comunicarse?
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Me he asustado un poco con lo último de los dibujos con GDI+ Por lo que entiendo, el problema sería que el form esta recibiendo más datos de los que puede procesar/dibujar no? Tal vez lo he entendido mal, pero en este caso, por más que se ejecute en otro hilo seguirá existiendo el cuello de botella Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Bueno, estoy haciendo un lenguaje de programación interpretado que corre sobre una máquina virtual. Hay un timer para la máquina, y otro para dibujar el buffer gráfico. El código puede mandar órdenes gráficas que se dibujan en el buffer, yo quiero que el dibujado de buffer en la superficie no interfiera en el loop principal. (Bueno, también he empezado a coquetear con directX, pero me llevará tiempo crear las clases que necesito...)
|
|
|
En línea
|
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
Has pensado en guardar los mensajes en una cola, e ir sacandolos cuando proceda?
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Lo probaré y comento.
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Bueno, he reprogramado el renderizador optimizando algo la velocidad, no he usado threads ni siquiera una pila, pero he reducido mucho las llamadas a eventos. El problema en modo consola sigue, pero creo que voy a pasar de liarme más con esto y voy a meterme en directX. Ahora estoy teniendo otros problemas para dibujar con el objeto sprite de directX, pero el diseño del objeto que encapsula directX me está gustando como me está quedando.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
que version de VB debo de usar?
Programación Visual Basic
|
magnavoxy
|
3
|
2,420
|
23 Enero 2008, 14:15 pm
por ???
|
|
|
T-SQL ¿Cuándo debo usar GO?
Bases de Datos
|
DanteInfernum
|
1
|
2,727
|
19 Septiembre 2013, 18:54 pm
por DanteInfernum
|
|
|
[Duda]¿Cual linux debo usar?
GNU/Linux
|
S E 7 E N
|
4
|
2,520
|
13 Mayo 2017, 01:47 am
por PalitroqueZ
|
|
|
Ejecución asincrona de consultas mediante ADO C++
Programación C/C++
|
SubAtomicParticula
|
1
|
1,626
|
3 Agosto 2017, 13:41 pm
por SubAtomicParticula
|
|
|
Que herramientas debo usar???
Programación General
|
jchaguan99
|
2
|
2,602
|
14 Diciembre 2017, 13:42 pm
por PalitroqueZ
|
|