OVH Cloud OVH Cloud

dllActiveX et thread....

2 réponses
Avatar
lamalice83
Salut =E0 tous,

dans une dllActiveX, j'ouvre un port COM avec createFile,=20
j'envois des donn=E9es, et je veux cr=E9er un thread pour=20
lire en permanence tous ce qui arrive sur le port COM.
Je cr=E9=E9 bien mon thread mais probl=E8me, apparement VB ne=20
g=E9re pas le multit=E2che car il se bloque dans mon thread,=20
au lieu de continuer normalement dans le programme.=20
Comment faire pour cr=E9er un thread ind=E9pendant?

Merci pour votre aide...

Lamalice83

2 réponses

Avatar
François Picalausa
Hello,

La réponse est assez simple:
VB ne supporte pas les threads!
De plus, un composant COM DLL est prévu pour tourner dans le thread de son
parent.

Pour créer un processus asynchrone, tu peux essayer un composant ActiveX
exe. Celui ci tourne dans son propre thread. Par conséquent, avec un timer
(contrôle ou par API), tu pourra lancer ta procédure de manière asynchrone
dans l'activeX Exe et donc lire comme tu veux les données.

Une autre possibilité serait de lire les données à partir de ReadFileEx qui
permet une lecture asynchrone.
Dans le même ordre d'idée, tu pourrais utiliser WaitCommEvent.

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"lamalice83" a écrit dans le
message de news:1ed5801c45776$31cea440$
Salut à tous,

dans une dllActiveX, j'ouvre un port COM avec createFile,
j'envois des données, et je veux créer un thread pour
lire en permanence tous ce qui arrive sur le port COM.
Je créé bien mon thread mais problème, apparement VB ne
gére pas le multitâche car il se bloque dans mon thread,
au lieu de continuer normalement dans le programme.
Comment faire pour créer un thread indépendant?

Merci pour votre aide...

Lamalice83


Avatar
ng
Salut,

Pour compléter, j'ai eu l'occasion cependant de voir qqes classes gérant le
multithreading fonctionnelles sur http://www.planet-source-code.com

Mais je te recommande la tecnhique de l'exe ActiveX indiquée par francois,
elle est stable dans l'IDE comme dans l'EXE compilé et est facile à mettre
en place.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



lamalice83 a écrit :

Salut à tous,

dans une dllActiveX, j'ouvre un port COM avec createFile,
j'envois des données, et je veux créer un thread pour
lire en permanence tous ce qui arrive sur le port COM.
Je créé bien mon thread mais problème, apparement VB ne
gére pas le multitâche car il se bloque dans mon thread,
au lieu de continuer normalement dans le programme.
Comment faire pour créer un thread indépendant?

Merci pour votre aide...

Lamalice83