[VB6] Multi-Threading - Stopper le 'Main'
badside
Messages postés
81
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
Je code en VB6 et j'arrive à lancer, à partir de la fonction Main de mon programme, un thread (un pour commencer).
Mon problème est le suivant :
Une fois le thread lancé, il se termine et tue aussi la fonction main. J'ai essayé d'utiliser un sleep mais cela stoppe le main et le thread (tous les processus ...).
Y a-t-il quelque chose permettant de stopper le 'main' et que celui-ci reprend son exécution quand le thread (voir un thread en particulier quand il y en aura plusieurs lancés) a terminé.
J'attends vos réponses, c'est assez urgent.
Merci.
Badside ;)
Je code en VB6 et j'arrive à lancer, à partir de la fonction Main de mon programme, un thread (un pour commencer).
Mon problème est le suivant :
Une fois le thread lancé, il se termine et tue aussi la fonction main. J'ai essayé d'utiliser un sleep mais cela stoppe le main et le thread (tous les processus ...).
Y a-t-il quelque chose permettant de stopper le 'main' et que celui-ci reprend son exécution quand le thread (voir un thread en particulier quand il y en aura plusieurs lancés) a terminé.
J'attends vos réponses, c'est assez urgent.
Merci.
Badside ;)
A voir également:
- [VB6] Multi-Threading - Stopper le 'Main'
- Vb6 - Télécharger - Divers Utilitaires
- Multi exp heartgold - Forum Jeux vidéo
- Sfr multi - Accueil - Opérateurs & Forfaits
- A javascript error occurred in the main process - Forum Matériel & Système
- Stopper reconduction jm date ✓ - Forum Consommation & Internet
9 réponses
Tu as envisager la possibilite des semaphores?
je ne sais pas si c adapte a ton prbm mais c plus simple que les thread en fonctionnement!
je ne sais pas si c adapte a ton prbm mais c plus simple que les thread en fonctionnement!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour tous,
En VB6 il n'y a pas de possibilité de faire du MultiTread, sauf avec un Exe ActiveX qui est fort limité.
Mais tu peu lancer plusieurs actions en différer
Pour remplacer le Wait faire une boucle avec des semaphores (drapeau, variables)
Une approche pour faire 2 actions ""en même temps""
A+
En VB6 il n'y a pas de possibilité de faire du MultiTread, sauf avec un Exe ActiveX qui est fort limité.
Mais tu peu lancer plusieurs actions en différer
Pour remplacer le Wait faire une boucle avec des semaphores (drapeau, variables)
Public Att1 As Boolean
Public Att2 As Boolean
Sub Lancer2Actions()
Call Lancer1
Call Lancer2
End Sub
Sub Lancer1()
While Att1 = False
'Faire action1 ou code
'ou ne rien faire simplement attendre que Att1 passe à True
DoEvents
Wend
End Sub
Sub Lancer2()
While Att2 = False
'Faire action2 ou code
'ou ne rien faire simplement attendre que Att2 passe à True
'Condition remplie !! Att2=true / tue le processus 2
DoEvents
Wend
Att1 = True 'Tue le processus 1
End Sub
Une approche pour faire 2 actions ""en même temps""
A+
Ok, merci lermite222. Je vais tester après car j'ai vu un autre problème dans l'appel à la fonction CreateThread() permettant de lancer le thread : apparemment, il ne passe pas le paramètre que je veux ... Je fais :
ll_MHandle = CreateThread(ByVal 0&, ByVal 0&, AddressOf ThreadPerfo2, li_IDThread, 0, ll_IpThreadID)
li_IDThread est le paramètre que je veux passer. La valeur est correcte lors du lancement du thread (appel à la fonction CreateThread) mais une fois dans le thread, j'ai une valeur qui n'a rien à voir ...
Des idées ? Me suis-je trompé dans la syntaxe ?
ll_MHandle = CreateThread(ByVal 0&, ByVal 0&, AddressOf ThreadPerfo2, li_IDThread, 0, ll_IpThreadID)
li_IDThread est le paramètre que je veux passer. La valeur est correcte lors du lancement du thread (appel à la fonction CreateThread) mais une fois dans le thread, j'ai une valeur qui n'a rien à voir ...
Des idées ? Me suis-je trompé dans la syntaxe ?
L'ennui avec cette solution c'est que je ne peux pas utiliser de variable publique.
Je lance plusieurs threads en même temps (processus différents exécutant le même code). Si j'utilise une variable publique, celle-ci passera un "true" quand un thread aura fini mais les autres threads n'ont pas fini ... La variable publique pour eux devrait être à "false".
Je lance plusieurs threads en même temps (processus différents exécutant le même code). Si j'utilise une variable publique, celle-ci passera un "true" quand un thread aura fini mais les autres threads n'ont pas fini ... La variable publique pour eux devrait être à "false".
Connaît pas, mais en cherchant un peu...
https://www.purebasic.com/french/documentation/thread/createthread.html
A+
https://www.purebasic.com/french/documentation/thread/createthread.html
A+
Employer autant de variable qu'il y a de tread !
Et par exemple pour 2 trhead.
?
A+
Et par exemple pour 2 trhead.
While not (Att1 or Att2)
'Faire action1 ou code
'ou ne rien faire simplement attendre que Att1 et Att2 passe à True
DoEvents
Wend
?
A+
J'ai pas trop le temps en fait.
Je me heurte à ce problème alors que tout le reste fonctionne. Je suis presque près de la fin ...