Programmation parallèle, Tasks et gestion des accès sur une liste.
Bonjour.
Dans ce topic, j'ai eu à gérer un petit problème en effectuant deux boucles espacées d'une minute. Mais voilà, l’exécution du programme est relativement longue.
Afin de résoudre cela, on m'avait proposé d'utiliser deux Threads de façon à commencer la première boucle, laisser tourner ça une minute et pour finir, lancer la deuxième boucle.
Je me suis un peu documenté et je me suis rendu compte qu'il existe maintenant des Tasks bien plus efficaces et facile à mettre en place (Parallel.ForEach par exemple). Cependant je ne sais pas comment faire en sorte que la deuxième boucle se lance au bout d'une minute.
Enfin, je vais devoir accéder à une même collection (ArrayList) avec les deux boucles. L'une ajoutant des objets dedans, l'autre faisant un traitement sur chaque objet.
Je n'ai pas vraiment encore fait de code mais on obtiendrait un truc du genre :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Parallel.ForEach(liste1, objet1 =>
{
//Traitement sur objet1
//Création d'un objet2
//Ajout de l'objet2 dans liste 2
});
//Au bout de 60000 ms, on lance une task
Task maTache = Task.Factory.StartNew(uneMethode); |
uneMethode
Code:
1 2 3 4 5
|
foreach(Object objet2 in liste2)
{
//traitement sur objet2
} |
Bon, y'a sans doute des fautes, des imprécisions et toussa, et pour cause : c'est encore très flou.
Quelqu'un à une piste à me donner? Une fonction à me proposer? Des corrections à effectuer?
Merci !