|
ThreadExecute avec <Procédure wLangage> variable |
Débuté par Sylvain RICAU, 30 mar. 2017 09:33 - 2 réponses |
| |
| | | |
|
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 30 mars 2017 - 09:33 |
Bonjour,
Je souhaiterais pouvoir lancer des threads de méthode d'une classe en utilisant une seule méthode LanceThread et non une méthode pour chaque méthode à lancer en Thread.
Procedure LanceThread(IndiceThreadAlancer,NbParametre=0) ThreadALancer est STThreadALancer=gtabThreadALancer[IndiceThreadAlancer]
SELON NbParametre CAS 1 ThreadExecute(ThreadALancer.Nom,ThreadALancer.Options_Lancement,ThreadALancer.Procédure_ALancer,ThreadALancer.Paramétre1,ThreadALancer.Paramétre2,ThreadALancer.Paramétre3) CAS 2 ThreadExecute(ThreadALancer.Nom,ThreadALancer.Options_Lancement,ThreadALancer.Procédure_ALancer,ThreadALancer.Paramétre1,ThreadALancer.Paramétre2,ThreadALancer.Paramétre3) CAS 3 ThreadExecute(ThreadALancer.Nom,ThreadALancer.Options_Lancement,ThreadALancer.Procédure_ALancer,ThreadALancer.Paramétre1,ThreadALancer.Paramétre2,ThreadALancer.Paramétre3) CAS 4 ThreadExecute(ThreadALancer.Nom,ThreadALancer.Options_Lancement,ThreadALancer.Procédure_ALancer,ThreadALancer.Paramétre1,ThreadALancer.Paramétre2,ThreadALancer.Paramétre3,ThreadALancer.Paramétre4) FIN
SI j'appelle Thread_Lance avec gtabThreadALancer.Procédure_ALancer="Essai" (Essai est une méthode non globale de la classe, j'ai le message d'erreur suivant à l'éxécution :
Erreur à la ligne 11 du traitement Méthode LanceThread. Vous avez appelé la fonction ThreadExécute. La procédure 'Essai' est inconnue.
Alors que :
- la méthode "Essai" existe bien dans la classe - l'exécution de ThreadExécute(ThreadALancer.Nom,ThreadALancer.Options_Lancement,Essai,ThreadALancer.Paramétre1,ThreadALancer.Paramétre2,ThreadALancer.Paramétre3) ne provoque pas d'erreur
Y a t il moyen d'arriver à mes fins ?
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 256 messages Popularité : +29 (29 votes) |
|
Posté le 30 mars 2017 - 11:20 |
Bonjour
Il y a un petit cas particulier pour les méthodes, il faut préfixer le nom de la méthode par ":" Vous pouvez également utiliser les procédures à nombres de paramètres variables.
Exemple de classe
Procedure M1() Trace("M1")
Procedure M2(x) Trace("M2 : "+x)
Procedure Lance(Thread,Option,Méthode,*) ThreadExecute(Thread,Option,":"+Méthode,MesParamètres[4 A])
Exemple d'appel
o.Lance("T1",threadNormal,"M1") o.Lance("T2",threadNormal,"M2","P") |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 30 mars 2017 - 11:48 |
Merci Yann pour ces réponses qui m'ont permis de résoudre mon problème |
| |
| |
| | | |
|
| | | | |
| | |
|