[VB6] Multi-Threading - Stopper le 'Main'
badside
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
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
- Delai paiement le bon coin remise en main propre - Forum Vos droits sur internet
- A javascript error occurred in the main process - Forum Matériel & Système
- Youtube multi downloader - Télécharger - Conversion & Codecs
- Vente en main propre sur leboncoin - Forum Vos droits sur 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+
Tu es obligé d'utiliser des thread pour faire ce que tu veux?
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 ...