|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Débuté par Monsieur AURAY-LORIVAL, 15 mai 2017 03:06 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 64 messages Popularité : -1 (1 vote) |
|
Posté le 15 mai 2017 - 03:06 |
Bonjour,
J'exécute 3 thread en même temps dont deux qui à la fin de leur traitement font un executethreadprincipal() pour mettre à jour mon interface. Tout marche très bien mais en plus de ça je voudrai qu'une fois les 3 thread terminés, faire une modification dans mon interface. Comment faire pour être sûr que les 3 thread sont terminés ?
Merci à vous |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages |
|
Posté le 15 mai 2017 - 07:58 |
Bonjour,
Tu pourrais avoir un compteur global initialisé à 3. Tes threads appelleraient une fonction global du style :
Procedure fctGlobal cmptGlobal-=1 SI cmptGlobal>0 ALORS RETOUR
Ton code pour mettre à jour ton interface |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 64 messages Popularité : -1 (1 vote) |
|
Posté le 16 mai 2017 - 00:47 |
Merci beaucoup, ça à marché super ! J'ai un autre problème mais lié aux mêmes threads donc je pose la problématique ici.
Quand j'arrive sur la fenêtre les 3 thread se lance, problème si je reviens sur la fenêtre précedente avant la fin d'exécution des threads, à un moment j'obtiens l'erreur comme quoi il ne trouve pas l'élément Img_profil ce qui est normal car j'ai changé de fenêtre. Du coup, comment arrêté les threads dès lors que je reviens sur la fenêtre précédente ?
MerciMessage modifié, 16 mai 2017 - 01:17 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
Posté le 16 mai 2017 - 10:01 |
Coucou,
les Tâches parallèles ?
https://doc.pcsoft.fr/?1000021229 // Indique une tâche parallèle de continuation qui sera exécutée lorsque toutes les tâches d'un tableau de tâches parallèles seront terminées. https://doc.pcsoft.fr/?1000021217&name=tacheparalleleexecuteaprestoutes_fonction
Mais au malheur, cela ne fonctionne pas sous Android ?? (j suis vraimment Windev, Windev Mobile j'ai arreter lorsque j'ai voulu importer mon code MVP WM21 ... -S)
SInon tu as ChampExiste pour verifie que ton champs existe et "tuer" tout seul le thread ?
https://doc.pcsoft.fr/?3025035
Ou alors tu peut passer pas un Signal
https://doc.pcsoft.fr/?3077018
Donc tu envoie un signal qui va demander a tes thread de s interompre "du coup proprement, pas en les tuants dans l'oeuf" Et tu peut placer le code dans la procedure de changement de fenetre / plan / n'importe, via ..Avant
https://doc.pcsoft.fr/?1000018907
p est une Procedure p = MaProcédure p..Après = MaProcédureAppeléeAprès p..Avant = MaProcédureAppeléeAvant
Les variables globales, je suis trés méchiant, me faut 10 bonnes raison pour en crée une.
Et tips tu as ThreadEtat qui permet de savoir on en sont tes threads
https://doc.pcsoft.fr/?3077016&name=threadetat_fonction
T'as plein d'options differente, j suis sur que tu vas de debrouiller
-- Charly CanDo. Forg en Nouvelle-Zélande - In üs we trust |
| |
| |
| | | |
|
| | |
| |
Posté le 16 mai 2017 - 13:10 |
Bonjour,
tout dépend de ce que tu fais dans les threads et si tu peux les arrêter en cours de route
Si ce n'est pas important, th peux utilise threadarrete dans le code de fermeture de ta fenetre
Si le traitement est important, tu peux positionner un flag global (mettre ton compteur de thread à 100 par exemple), et dans le code de tes thread, la ou ca ne posera pas de problème, tester si =100 et arrêter le thread.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 5/15/2017 à 4:47 PM, Monsieur AURAY-LORIVAL a écrit :
Merci beaucoup, ça à marché super ! J'ai un autre problème mais lié aux mêmes threads donc je pose la problématique ici.
Quand j'arrive sur la fenêtre les 3 thread se lance, problème si je reviens sur la fenêtre précedente avant la fin d'exécution des threads, à un moment j'obtiens l'erreur comme quoi il ne trouve pas l'élément Img_profil ce qui est normal car j'ai changé de fenêtre. Du coup, comment arrêté les threads dès lors que je reviens sur la fenêtre précédente ?
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 64 messages Popularité : -1 (1 vote) |
|
Posté le 16 mai 2017 - 20:16 |
La solution à tout simplement été d'ajouter le traitement d'exception dans chaque thread. Si exception..RETOUR
Ca traite en partie car ça m'oblige à inactivé mon bouton précédent car si je reviens sur la fenêtre précédente et sélectionne un autre élément de ma zr pour retourner sur la page, certains thread qui mettent du temps tourne encore depuis l'élément précédent et la y'a pas d'exception vu que je suis sur la fenêtre donc il m'affiche la fenêtre sans erreur mais avec les valeurs de l'ancien élément sélectionné. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|