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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:1ed5801c45776$31cea440$a601280a@phx.gbl
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?
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
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
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 <anonymous@discussions.microsoft.com> 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?
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?