Autor Tema: ¿THREADS O HILOS EN VB6.0?  (Leído 23225 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Rick.Hunter.007

  • Visitante
¿THREADS O HILOS EN VB6.0?
« : diciembre 20, 2007, 08:51:43 am »
Hola amigos programadores. ¿Alguno de ustedes sabe si se pueden manejar varios THREADS en VB6.0 ??????  :hammer:

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #1 : diciembre 21, 2007, 08:41:01 am »
mira hasta dond yo tengo entendido no se puede hacer Threads en vb 6.0. ¿Por que razon? Porque si recuerdan vs 6.0 sali en 1998 entonces ni siquiera se pensaba en hacer tarear multihilos. Esa tecnologia la introdujeron en vs 2002-2003 ya propiamente en el .NET que el nombre de espacio si mal no recuerdo es THREADING algo asi creo pero ya en vs 2005 ya introdujeron el control BackgroundWorker mucho mejor que el de vs2002-2003 que era una  clase unicamente!

X eso que yo recuerde no se puede hacer hilos en vs 6.0 aunq con la actualziacion de los SP que el ultimo de Visual Basic 6.0 fue el SP6, noc si ahi ya lo incluyeron o algo!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #2 : diciembre 21, 2007, 08:55:28 am »
No, ningun SP del VB6 incluyo alguna manera de crear multithreading de forma nativa en VB6.

Sin embargo hay muchas formas de hacerlo, desde las mas vulgares (con multiples exes...) (pasando por EXE ActiveX) hasta formas muy elaboradas con DLLs y demas cosas.

Sin embargo, para el Reseter 3 me di cuenta que la mejor forma de 'simular' multithreading es con el API 'settimer".

Suena extraño, pero de alguna forma esa API resulta increiblemente conveniente porque te permite pasarle el identificador del procedimiento que queres que ejecute (el cual obtenes con 'AddressOf') y lo ejecuta en el fondo.

Si quieres puedes ver un ejemplo de esto en el codigo del Reseter 3, en el procedimiento 'Crear_Objeto_IE()'.

Basicamente lo que hace es ejecutar un hilo que se encarga de crear y esperar a que se cree el objeto "InternetExplorer.Application", lo cual lo hace el procedimiento 'lpObjetoIE()', de no ser asi, la aplicacion se bloquearia mientras inicia.

Sin embargo deberias de plantear mejor tu necesidad en especifico, para ver la mejor solucion.

PD: Juancho, HLQYS el multithreading esta presente desde tiempos algo remotos :)

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #3 : diciembre 21, 2007, 09:02:10 am »
Por cierto, Googleando por "Multithreading + vb6":
http://www.freevbcode.com/ShowCode.Asp?ID=1287
http://www.vbforums.com/showthread.php?s=&threadid=296315
http://www.elguille.info/colabora/vb/multi_thread_nc.htm
http://visualbasic.ittoolbox.com/documents/popular-q-and-a/mutithreading-support-in-visual-basic-1785

Discusion al respecto:
http://www.xtremevbtalk.com/showthread.php?t=252924

Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #4 : diciembre 22, 2007, 08:27:13 am »
Gracias Vlad, voy a revisar tú código de Reseter 3
Código: [Seleccionar]
http://www.svcommunity.org/redir/?http://www.xmr.bolhost.com/arc/1%20Reseter/Reseter%203.0.0%20Alpha%201.zip para ver que ondax. Lo que sucede es que estoy trabajando con unos registros inmensos de sql server y de oracle... y pues, mientras el usuario esta haciendo algo más, quiero que esos registros, anticipadamente, se me bajen del servidor... porque despues los meto en clases (sip, en vb6) y los proceso para hacer calculos con $$$.... a pues, eso lo quiero hacer background... no tanto como el soporte que DoEvents me proporciona, sino... que ni siquiera que se note... de pronto, ya estaria ahi, bien ejecutado jajajajaja  :diablo: Es cierto. En VS.NET la cosa es más sencilla... mejor dicho: "C@GADA" de risa... es como Java...  :roll: una completa risa, ya cuando uno ha trabajado con la WinAPI 32 en C++ para hacer sistemas.... jajajaja  :rofl:

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #5 : diciembre 22, 2007, 08:40:14 am »
Gracias Vlad, voy a revisar tú código de Reseter 3
Código: [Seleccionar]
http://www.svcommunity.org/redir/?http://www.xmr.bolhost.com/arc/1%20Reseter/Reseter%203.0.0%20Alpha%201.zip para ver que ondax. Lo que sucede es que estoy trabajando con unos registros inmensos de sql server y de oracle... y pues, mientras el usuario esta haciendo algo más, quiero que esos registros, anticipadamente, se me bajen del servidor... porque despues los meto en clases (sip, en vb6) y los proceso para hacer calculos con $$$.... a pues, eso lo quiero hacer background... no tanto como el soporte que DoEvents me proporciona, sino... que ni siquiera que se note... de pronto, ya estaria ahi, bien ejecutado jajajajaja  :diablo: Es cierto. En VS.NET la cosa es más sencilla... mejor dicho: "C@GADA" de risa... es como Java...  :roll: una completa risa, ya cuando uno ha trabajado con la WinAPI 32 en C++ para hacer sistemas.... jajajaja  :rofl:
Realmente es este :): http://untercio.net/extra/Reseter%203.rar

Por cierto, el uso de DoEvents es completamente para otros fines, pero en tu caso no estoy seguro de entender muy bien el problema.

¿Tanto tarda en obtenerse un registro desde el servidor?, ¿o es que tenes que tener todos los registros para hacer el calculo que decis?.

Cuando "bajas" los registros, ¿haces una copia local de la base que esta en el servidor o simplemente metes todos los registros en la memoria?

Por cierto, ¿será que el cuello de botella esta en los calculos y no en  el acceso a la base de datos?

Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #6 : diciembre 22, 2007, 08:40:51 am »
Ey. No veo nada especial... ni en Global.bas, ni en NET.bas....... solo un DoEvents....  :cry: 

Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #7 : diciembre 22, 2007, 08:45:13 am »
Realmente es este :): http://untercio.net/extra/Reseter%203.rar

Por cierto, el uso de DoEvents es completamente para otros fines, pero en tu caso no estoy seguro de entender muy bien el problema.

¿Tanto tarda en obtenerse un registro desde el servidor?, ¿o es que tenes que tener todos los registros para hacer el calculo que decis?.

Cuando "bajas" los registros, ¿haces una copia local de la base que esta en el servidor o simplemente metes todos los registros en la memoria?

Por cierto, ¿será que el cuello de botella esta en los calculos y no en  el acceso a la base de datos?
Mmm.....Okey, vere ese. Lo que sucede es que en la bd tengo más de 13 millones de registros... 13.337... o algo asi jajajaja... y se tarda un POQUITO en acceder a ellos.... he tratado de optimizar la consulta... pero ni modo, siempre se tarde 1.6 o 2 segundos en Oracle.... e igual, tengo que obtener varios usuarios de la red (registros)... por eso.... mejor que lo haga background y que llene una estructura (lo hago del servidor a la ram)... más rapido asi....... haber, ya reviso....mmmm

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #8 : diciembre 22, 2007, 08:50:08 am »
Verás, en esa versión tenes que encontrar una parte que dice 'hpObjetoIE = SetTimer(0, 0, 0, AddressOf lpObjetoIE)' @ 'Crear_Objeto_IE()'

El cual dispara 'lpObjetoIE()', el que a la vez elimina el Timer ('KillTimer 0, hpObjetoIE') para evitar una nueva repetición y deja el proceso terminando en el fondo.


Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #9 : diciembre 22, 2007, 08:51:38 am »
Verás, en esa versión tenes que encontrar una parte que dice 'hpObjetoIE = SetTimer(0, 0, 0, AddressOf lpObjetoIE)' @ 'Crear_Objeto_IE()'

El cual dispara 'lpObjetoIE()', el que a la vez elimina el Timer ('KillTimer 0, hpObjetoIE') para evitar una nueva repetición y deja el proceso terminando en el fondo.


Ahhhhhhhhhhh. Pero para eso necesito la clase cTimer... y ahi como que medio tiene derechos de autor jajajaja.... bueno, espero que no sea salvatrucho, porque robare JAJAJAJAJJA  :rofl:

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #10 : diciembre 22, 2007, 08:56:12 am »
Ahhhhhhhhhhh. Pero para eso necesito la clase cTimer... y ahi como que medio tiene derechos de autor jajajaja.... bueno, espero que no sea salvatrucho, porque robare JAJAJAJAJJA  :rofl:
cTimer no es necesario, es una cosa completamente diferente.

Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #11 : diciembre 22, 2007, 08:58:44 am »
En la versión que me baje no tá eso (3 beta 1)... ¿Estara en la 4?....Mmmm  :p

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #12 : diciembre 22, 2007, 09:01:27 am »
En la versión que me baje no tá eso (3 beta 1)... ¿Estara en la 4?....Mmmm  :p
No, esta en el Reseter 3.0 final, el del link que puse en el post #5 (el que no sirve). Ya te mandé un nuevo link para descargarlo en respuesta al MP.

Por si en caso, es este: http://www.todosv.com/index.php?showtopic=664&view=getnewpost



Por cierto, aunque ya dije que cTimer no es necesario para lo que estas haciendo, quiero aclarar algo sobre la licencia de uso, y es que dice:

Citar
'   This Class module is provided AS-IS. This Class module can be used as a part of a compiled
'   executable whether freeware or not
.
`
« Última Modificación: diciembre 22, 2007, 09:05:44 am por Vlad »

Rick.Hunter.007

  • Visitante
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #13 : diciembre 22, 2007, 09:09:24 am »
Aja!!!, mi amada winAPI jajajajajajaja
Código: [Seleccionar]
'Tomado de http://abstractvb.com/code.asp?A=939 (Asi dice en el código de Vlad-Kike1/3
Public Declare Function SetTimer _
               Lib "user32" (ByVal hwnd As Long, _
                             ByVal nIDEvent As Long, _
                             ByVal uElapse As Long, _
                             ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer _
               Lib "user32" (ByVal hwnd As Long, _
                             ByVal nIDEvent As Long) As Long


MUCHAS GRACIAS VLAD Y KIKE1/3 (Que solo estabas viendo el post). Ya entendi. Y lo voy a aplicar para sacar más $$$... los voy a dejar impresionados... juajuajua  :diablo:
« Última Modificación: diciembre 22, 2007, 09:15:25 am por Rick.Hunter.007 »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: ¿THREADS O HILOS EN VB6.0?
« Respuesta #14 : diciembre 22, 2007, 09:27:57 am »
Que bueno que le podas sacar provecho ($$$), hay le donas algo al hosting de svcommunity.org XD :D :thumbsup:
« Última Modificación: diciembre 22, 2007, 09:31:00 am por Vlad »