Meilleur auteur de réponses
Traitement multiThreading

Question
-
Bonjour à tous,
Dans mon application (WCF - C#) j'ai 3 traitements à faire. Je voudrais faire les 3 traitements en même temps, d'ou le multi-Threading, mais l'application (le Thread principal) doit "attendre" que les 3 traitements finissent, pour continuer le reste du traitement.
Pour information : 1 traitement pour payer, 1 pour reprendre et 1 pour taxer. Les 3 traitements sont bien distincts.
Je suis preneur de toute idée.
Merci.
- Déplacé Ciprian Duduiala vendredi 24 février 2012 07:57 (Origine :Développement .NET (en général))
Réponses
-
Bonjour,
Si vous utilisez le .NET Framework 4.0 cela se fait très simplement comme ceci :
Parallel.Invoke(() => Traitement1(...), () => Traitement2(...), () => Traitement3());
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposé comme réponse JeremyJeansonMVP, Moderator vendredi 24 février 2012 09:56
- Marqué comme réponse Anthony.Ryck vendredi 24 février 2012 12:17
-
Bonjour,
Merci pour votre réponse. J'ai regardé dans ce sens, mais j'ai opté pour :
Task<Tresult>[] tasks = new Task<Tresult>[3]; tasks[0] = Task<Tresult>.Factory.StartNew(() => Traitement()); tasks[1] = Task<Tresult>.Factory.StartNew(() => Traitement()); tasks[2] = Task<Tresult>.Factory.StartNew(() => Traitement()); Task.WaitAll(tasks); for (int i = 0; i < 10; i++) { Tresult resultats = tasks[i].Result; } // Traitement sur le résultat.
J'espère que ce traitement reste dans l'idée que vous proposez.
Cordialement.
- Modifié Anthony.Ryck vendredi 24 février 2012 12:23 erreur dans le typage
- Marqué comme réponse Ciprian Duduiala mercredi 29 février 2012 10:10
Toutes les réponses
-
Bonjour,
Si vous utilisez le .NET Framework 4.0 cela se fait très simplement comme ceci :
Parallel.Invoke(() => Traitement1(...), () => Traitement2(...), () => Traitement3());
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposé comme réponse JeremyJeansonMVP, Moderator vendredi 24 février 2012 09:56
- Marqué comme réponse Anthony.Ryck vendredi 24 février 2012 12:17
-
Bonjour,
Merci pour votre réponse. J'ai regardé dans ce sens, mais j'ai opté pour :
Task<Tresult>[] tasks = new Task<Tresult>[3]; tasks[0] = Task<Tresult>.Factory.StartNew(() => Traitement()); tasks[1] = Task<Tresult>.Factory.StartNew(() => Traitement()); tasks[2] = Task<Tresult>.Factory.StartNew(() => Traitement()); Task.WaitAll(tasks); for (int i = 0; i < 10; i++) { Tresult resultats = tasks[i].Result; } // Traitement sur le résultat.
J'espère que ce traitement reste dans l'idée que vous proposez.
Cordialement.
- Modifié Anthony.Ryck vendredi 24 février 2012 12:23 erreur dans le typage
- Marqué comme réponse Ciprian Duduiala mercredi 29 février 2012 10:10