Bonjour,
j'ai un peu de mal avec les threads en c#, du coup je ne comprends pas trop ce que je lis dans les différentes discussions que je trouve. Alors je viens directement vous demander votre avis.
Voilà mon problème:
J'ai tout un tas de petits 'jobs' qui vont être effectué par des BackgroundWorkers. Disons que j'en ai 20 simultanément, et je vais les lancer simultanément. Ces bg workers sont asynchrones, et certains vont se terminer beaucoup plus tard que d'autres. Or j'ai besoin de "savoir" quand ils ont tous terminé leur travail.
En gros, dans mon main je commence par lancer tous les bg workers. Ensuite, il me faudrait un 'wait' qui attend que tous les workers aient fini leur job. Mais je ne sais pas trop comment implémenter concrètement ceci.
1er problème: j'ai compris comment récupérer la fin d'un bg worker (en utilisant l'event RunWorkerCompleted). Mais ce que je ne sais pas faire, c'est, une fois que tous les workers ont terminé, comment envoyer un event au 'main' pour lui dire que tous les workers ont terminé. Car je pourrais avoir un flag et un wait (wait tant que le flag est à zéro) dans le main, mais j'en arrive au:
2eme problème: un wait dans le main avec un flag je trouve ça vraiment moche. On faisait ça il y a longtemps en c++ lorsqu'on avait pas le temps de faire les choses bien, mais c'est ultra moche et une véritable catastrophe en terme de performances. Du coup, j'imagine qu'il doit y avoir, en C#, une façon propre et simple de faire ça, non?
Partager