Dans une procédure, pour chaque élément de MonTableau, j'exécute une méthode
sur l'élément concerné.
Cette méthode peut s'exécuter très rapidement (quelques millisecondes) mais
peut également durer un certain temps (un peu plus d'une minute, sachant que
durant ce laps de temps, aucune ressource (processus, disque dur, réseau)
n'est surchargée).
Etant donné que tous les éléments sont indépendants les uns des autres,
j'aimerai pouvoir exécuter cette méthode sur tous les éléments mais de façon
quasi simultanée sans attendre la fin de chaque traitement avant de pouvoir
lancer le suivant.
Cependant, avant de terminer ma procédure, j'aurais également besoin
d'attendre que le dernier élément (celui qui a eu son traitement le plus
long, pas forcément le dernier élément de MonTableau) ait terminé son
traitement.
A noter que durant l'éxécution de la méthode, j'appelle une procédure afin
d'indiquer l'étape en cours dans un ToolStripStatusLabel (c'est le seul
point où il existe une intéraction entre le traitement et l'interface).
Je suppose que le BackgroundWorker pourrait répondre à mon besoin, mais j'ai
encore un peu de mal pour savoir comment l'adapter à mon besoin.
Désolé pour les multiples retours à la ligne (Outlook Express n'a pas l'air d'aimer les copier/coller depuis Word) entre chaque paragraphe.
J'ai oublié de fournir un exemple de mon code à l'heure actuelle.
For Each MonElement as MaClasse In MonTableau MonElement.MaMethode Next MsgBox "Fini"
Merci.
<Stéphane> a écrit dans le message de news:
...
Jérémy Jeanson
Bonjour Stéphane,
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type MaClass, pourquoi ne pas simplement utiliser un BackgroundWorker dans MaClass et ajouter une méthode publique dans cette classe afin de lancer le traitement.
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Stéphane,
Dans ton cas, le BackgroundWorker pourrait effectivement faire
l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances
d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type
MaClass, pourquoi ne pas simplement utiliser un BackgroundWorker dans
MaClass et ajouter une méthode publique dans cette classe afin de lancer
le traitement.
Et dans le formulaire qui contient ton tableau lancer un autre
BackgroundWorker ou alors une simple méthode (l'usage d'un
BackgroundWorker n'est certainement pas util ici) qui lance la méthode
asynchrone de chaque objet de type MaClass.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type MaClass, pourquoi ne pas simplement utiliser un BackgroundWorker dans MaClass et ajouter une méthode publique dans cette classe afin de lancer le traitement.
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Merci Jérémy pour ton aide,
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
puis
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass.
Ok, pas de soucis pour créer les BW dynamiquement (je crois que je n'avais pas le choix), mais par contre, j'ai du mal à comprendre s'il faut 1BW (1er paragraphe) ou s'il n'est pas nécessaire (dernier paragraphe) (ou plutôt qu'est ce que ce BW peut apporter ?).
Je vais également regarder si y a moyen de mettre le BW directement dans la méthode de la classe. J'ai oublié de préciser que la méthode retourne un booléen pour indiquer si le traitement s'est effectué correctement ou non. Je ne sais pas si ca a 1 incidence.
Stéphane.
"Jérémy Jeanson" a écrit dans le message de news: ez%
Bonjour Stéphane,
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type MaClass, pourquoi ne pas simplement utiliser un BackgroundWorker dans MaClass et ajouter une méthode publique dans cette classe afin de lancer le traitement.
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Merci Jérémy pour ton aide,
Dans ton cas, le BackgroundWorker pourrait effectivement faire
l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances
d'autres BackgroundWorker créés dynamiquement.
puis
Et dans le formulaire qui contient ton tableau lancer un autre
BackgroundWorker ou alors une simple méthode (l'usage d'un
BackgroundWorker n'est certainement pas util ici) qui lance la méthode
asynchrone de chaque objet de type MaClass.
Ok, pas de soucis pour créer les BW dynamiquement (je crois que je n'avais
pas le choix), mais par contre, j'ai du mal à comprendre s'il faut 1BW (1er
paragraphe) ou s'il n'est pas nécessaire (dernier paragraphe) (ou plutôt
qu'est ce que ce BW peut apporter ?).
Je vais également regarder si y a moyen de mettre le BW directement dans la
méthode de la classe. J'ai oublié de préciser que la méthode retourne un
booléen pour indiquer si le traitement s'est effectué correctement ou non.
Je ne sais pas si ca a 1 incidence.
Stéphane.
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de news:
ez%23PfbP6JHA.1380@TK2MSFTNGP05.phx.gbl...
Bonjour Stéphane,
Dans ton cas, le BackgroundWorker pourrait effectivement faire
l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances
d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type MaClass,
pourquoi ne pas simplement utiliser un BackgroundWorker dans MaClass et
ajouter une méthode publique dans cette classe afin de lancer le
traitement.
Et dans le formulaire qui contient ton tableau lancer un autre
BackgroundWorker ou alors une simple méthode (l'usage d'un
BackgroundWorker n'est certainement pas util ici) qui lance la méthode
asynchrone de chaque objet de type MaClass.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
puis
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass.
Ok, pas de soucis pour créer les BW dynamiquement (je crois que je n'avais pas le choix), mais par contre, j'ai du mal à comprendre s'il faut 1BW (1er paragraphe) ou s'il n'est pas nécessaire (dernier paragraphe) (ou plutôt qu'est ce que ce BW peut apporter ?).
Je vais également regarder si y a moyen de mettre le BW directement dans la méthode de la classe. J'ai oublié de préciser que la méthode retourne un booléen pour indiquer si le traitement s'est effectué correctement ou non. Je ne sais pas si ca a 1 incidence.
Stéphane.
"Jérémy Jeanson" a écrit dans le message de news: ez%
Bonjour Stéphane,
Dans ton cas, le BackgroundWorker pourrait effectivement faire l'affaire... enfin du moins si tu utilise un BackgroundWorker qui lances d'autres BackgroundWorker créés dynamiquement.
Mais étant donné que tu chaque élément de ton tableau est de type MaClass, pourquoi ne pas simplement utiliser un BackgroundWorker dans MaClass et ajouter une méthode publique dans cette classe afin de lancer le traitement.
Et dans le formulaire qui contient ton tableau lancer un autre BackgroundWorker ou alors une simple méthode (l'usage d'un BackgroundWorker n'est certainement pas util ici) qui lance la méthode asynchrone de chaque objet de type MaClass. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Merci Jérémy, tout fonctionne parfaitement bien comme il faut !
"Jérémy Jeanson" a écrit dans le message de news: ez%
Bonjour Stéphane,
Merci Jérémy, tout fonctionne parfaitement bien comme il faut !
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de news:
ez%23PfbP6JHA.1380@TK2MSFTNGP05.phx.gbl...