Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VB .Net 2008 Express] BackgroundWorker

4 réponses
Avatar
Bonjour,



J'ai un tableau MonTableau de type MaClasse.



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.



Merci d'avance pour votre aide,

Stéphane

4 réponses

Avatar
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:

...
Avatar
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
Avatar
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


Avatar
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,