elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  MultiProceso
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MultiProceso  (Leído 2,876 veces)
DarkMatrix

Desconectado Desconectado

Mensajes: 150


Nuestro Limite es la Imaginacion


Ver Perfil WWW
MultiProceso
« en: 21 Julio 2010, 00:47 am »

Buenas, tengo un inconveniente y no encuentro una solucion. Veran tengo una aplicacion que necesita ejecutar una funcion, esta funcion se debe mantener activa hasta que la en la aplicacion suceda algo por ejemplo que cambie una variable, en pequeño ejemplo:

Código
  1. Sub Funcion()
  2.  
  3.    ' La aplicacion activa un suceso, ejemplo activa un command botton.
  4.  
  5.    ' La aplicacion se mantiene en esta linea sin pasar a la siguiente linea hasta que
  6.    ' una variable cambie de valor, cuando la variable cambia de valor entonces
  7.    ' pasa a la siguiente linea.
  8.  
  9.    ' Desactiva el suceso antes activado.
  10.  
  11. End Function


Esto yo lo habia logrado aplicando un doEvents junto con waitmessage, pero el problema surge cuando tengo que llamar dos veces a esa funcion, solo me ejecuta una a la vez, el doevents se mantiene en una funcion pero no me analiza la otra y esto me causa problemas, ya que ambas tienen condiciones diferentes, y si la condicion de una cambia mientras el bucle esta en la otra entonces se queda pegada esa funcion y no me sirve :S. Quisiera saber si saben alguna forma de solucionar esto o alguna alternativa que me sirva Gracias.

Saludos! XD!



En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: MultiProceso
« Respuesta #1 en: 21 Julio 2010, 01:25 am »


Me huele a qué necesitas Hilos!¡, No es recomendable pero siendo tu caso seria con Hilos !¡.
CreateTheard!¡

Aun que la alternativa en VB6 es CreateWindowEx si no recuerdo y Sub-Clasificar la ventana creada y asi crear un hilo, pero bueno!¡.

Pero bueno sacando los hilos del tema, te vendría bien poner tu función en un Modulo de Clase si no me equivoco al respecto!¡.

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
DarkMatrix

Desconectado Desconectado

Mensajes: 150


Nuestro Limite es la Imaginacion


Ver Perfil WWW
Re: MultiProceso
« Respuesta #2 en: 21 Julio 2010, 17:29 pm »

No manejo mucho los modulos de calse pero podrias dar un ejemplo de como lo harias? Aqui pongo un ejemplo de lo que quiero hacer:

En un form:

Código
  1. Option Explicit
  2.  
  3. Dim Variable            As Integer
  4.  
  5. Private Sub Command1_Click()
  6.    Variable = 1
  7. End Sub
  8.  
  9. Private Sub Command2_Click()
  10.    Variable = 2
  11. End Sub
  12.  
  13. Private Sub Form_Load()
  14.    Timer1.Enabled = True
  15.    Timer2.Enabled = True
  16.    MsgBox "Se ejecutaron las funciones"
  17. End Sub
  18.  
  19. Function Funcion1()
  20.  
  21.    Debug.Print "Empezo la funcion 1"
  22.  
  23.    Do
  24.        WaitMessage
  25.        DoEvents
  26.    Loop Until Variable = 1
  27.  
  28.    MsgBox "Acabo la funcion 1 "
  29.  
  30. End Function
  31.  
  32. Function Funcion2()
  33.  
  34.    Debug.Print "Empezo la funcion 2"
  35.  
  36.    Do
  37.        WaitMessage
  38.        DoEvents
  39.    Loop Until Variable = 2
  40.  
  41.    MsgBox "Acabo la funcion 2 "
  42.  
  43. End Function
  44.  
  45. Private Sub Timer1_Timer()
  46.    Timer1.Enabled = False
  47.    Call Funcion1
  48. End Sub
  49.  
  50. Private Sub Timer2_Timer()
  51.    Timer2.Enabled = False
  52.    Call Funcion2
  53. End Sub
  54.  

Tengo 2 botones y dos funciones, los timers son para llamar a ambas funciones al mismo tiempo. Si se corre el ejemplo veran que las dos funciones inicializan pero la ultima en iniciar es la que se mantiene en el bucle mientras que la otra no.

Ejemplo si inicio la aplicacion y empieza la funcion1 y despues la funcion2 si aprieto el command1 que es el que modifica la variable para que salga de la funcion 1 no pasa nada pero si pulso el command2 si sale de la funcion 2 :S a ver si me pueden hechar una mano, he pensado en varias cosas pero no me sirven gracias de ante mano.
En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: MultiProceso
« Respuesta #3 en: 21 Julio 2010, 18:03 pm »

Sino me equivoco seria averiaguas la situacion de la funcion con GetProcAddress y con  GetModuleHandle y la lanzas con CreateRemoteThread... yo estoy hablando de hacerlo ya con una dll!!! depsue sd ehaberla cargado en el proceso de nuestro exe.

salu2!
En línea

Un byte a la izquierda.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: MultiProceso
« Respuesta #4 en: 21 Julio 2010, 20:12 pm »

@DarkMatrix

http://www.recursosvisualbasic.com.ar/htm/tutoriales/modulos-de-clase-menu.htm

Mas o menos es esto lo que quieres o me equivoco?!¡...

Código
  1.  
  2. Function Funcion2()
  3.    Debug.Print "Empezo la funcion 2"
  4.    Do
  5.        WaitMessage
  6.        DoEvents
  7.    Loop Until Variable = 2 Or Variable = 1
  8.    Debug.Print "Acabo la funcion 2 "
  9. End Function
  10.  
  11.  

Aun qué si tienes muchas funciones de este tipo, es mejor hacerlo en un modulo de clase y sacarle en la sección qué desees un evento, así se ejecutaría un Código X determinado y se vería mejor ordenado!¡.


@Drinky94

CreateRemoteThread

Para qué querría tener un proceso remoto teniendo el código fuente a manipular?!¡...


Sangriento Infierno Lunar!¡.
« Última modificación: 21 Julio 2010, 20:31 pm por BlackZeroX » En línea

The Dark Shadow is my passion.
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: MultiProceso
« Respuesta #5 en: 21 Julio 2010, 21:51 pm »

BlackZerox ,Cierto... pero nose XD me dio el venazo y asi lo primero que pense fue en una dll jajajaj xD

salu2!
En línea

Un byte a la izquierda.
DarkMatrix

Desconectado Desconectado

Mensajes: 150


Nuestro Limite es la Imaginacion


Ver Perfil WWW
Re: MultiProceso
« Respuesta #6 en: 22 Julio 2010, 00:01 am »

@DarkMatrix

http://www.recursosvisualbasic.com.ar/htm/tutoriales/modulos-de-clase-menu.htm

Mas o menos es esto lo que quieres o me equivoco?!¡...

Código
  1.  
  2. Function Funcion2()
  3.    Debug.Print "Empezo la funcion 2"
  4.    Do
  5.        WaitMessage
  6.        DoEvents
  7.    Loop Until Variable = 2 Or Variable = 1
  8.    Debug.Print "Acabo la funcion 2 "
  9. End Function
  10.  
  11.  

No exactamente porque la Funcion 1 es distinta de la 2 y si una cambia la otra no se ve afectada, el problema surge que cuando ejecuto las 2 o mas de 2 solo me analiza la ultima en ejecutar por tanto si Variable = 1 y la ultima funcion ejecutada es la 2 no sale del bucle la 1 y asi se queda.

La idea es permanecer en ambos bucles de ambas funciones por separado de modo que si la variable toma un valor u otro las funciones reaccionen deacuerdo a su condicion de bucle.

PD: le hechare un vistazo a los modulos de clase :P Saludos!
En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
El multiproceso de Firefox gastará un 20% más de RAM
Noticias
wolfbcn 0 1,104 Último mensaje 15 Febrero 2016, 13:48 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines