Maintenant, j'utilise quelque chose de Simmilar à cette construction et pas très heureux avec elle. Existe-t-il un moyen meilleur et plus propre de faire un tel type d'exécution d'actions séquentes / simultanées? P> Je consulte RX Cadre, mais il est conçu pour d'autres tâches et ressemble à une autre solution pour mon problème. p> p>
5 Réponses :
Ce n'est pas beaucoup em> Nettoyant, mais vous pourriez avoir un coup d'oeil à Backworker code>.
BackgroundWorker A = new BackgroundWorker();
A.DoWork += (s, e) => AMethod();
A.RunWorkerCompleted += (s, e) => BMethod();
BackgroundWorker B = new BackgroundWorker();
B.RunWorkerCompleted += (s, e) => CMethod();
//etc
Soyez très prudent avec cela. Je recommande généralement d'éviter les threads de gérer le flux de programme ASYNC. Il y a de meilleures constructions que de threads pour organiser le code. La complexité de la lisibilité et de l'exécution du code ne valent pas la peine.
Quelles constructions sont là que vous recommandez ??
Regardez sur réactiveUI . Il est basé sur Rx et simplifiera votre code beaucoup. Voici un exemple: Appeler des services Web en Silverlight à l'aide de ReactiveXAML P>
Il n'est pas nécessaire de nier la configuration des événements terminés, à moins que quelqu'un puisse réellement appeler B ou C avant la fin des Si vous le séparez, voici ce à quoi il ressemble:
A.Completed += () => { B(); }; B.Completed += () => { C(); }; C.Completed += () => { // }; A();
attendre le C # 5.0 et utilisez le nouveau Voici quelques liens préliminaires à ce sujet: P>
async code> et
attendre code> mots-clés. P>
Avoir le même remplissage. Toute mise en œuvre avec des positions linguistiques actuelles obscurcit le code. J'espère que le C # 5 sera publié bientôt.
En attendant, ce n'est pas une réponse sérieuse.
Vous pouvez également consulter le code source SignalR pour des trucs comme à ce moment-là, attraper une utilisation fluide.