J'ai un faisceau de test d'intégration qui lance une console exe plusieurs fois, simultanément, chacun dans son propre domaine d'application. Dès que l'une des applications exe de la console quitte son domaine d'application, stdin, stdout, stderr se ferme pour tous les autres domaines d'application exe de la console. C'est-à-dire que la console est fermée même si l'application continue. C'est dommage, car les autres "applications de console" encore actives ont du matériel supplémentaire à afficher sur l'écran. Je voudrais savoir s'il existe un moyen de maintenir la console ouverte, même si l'une des sorties de la console fonctionne, jusqu'à ce que je sois prêt et que la console soit vraiment arrêtée. Pour les curieux, mon harnais de test d'intégration s'exécute à partir du framework de test unitaire VS (vstesthost.exe). Je ne pense pas que ce détail soit pertinent à la question, mais j'aimerais que la console reste ouverte jusqu'à ce que mon test soit terminé. Certes, le framework de tests unitaires ne doit pas s'appuyer sur la sortie de la console pour sa valeur, mais cela aide quand je débogue les tests. BTW, le fait que je cours un test d'intégration à partir d'un cadre de test unitaire est hors sujet. :)AppDomains multiples: maintenir la console ouverte
Répondre
Approche intéressante ... Je me demande, même si vous corrigez cela, comment vous avez l'intention de traiter les problèmes de concurrence sur std.out et std.err?
Je l'ai déjà fait plusieurs fois pour résoudre la question:
- créer le domaine de l'application
- créer un objet MarshalByRef dans le nouveau domaine
- passer un TextWriter personnalisé dans la nouvelle domaine
- remplacer les valeurs de std.err et std.out dans .NET via Console.Set ???? (TextWriter)
- exécuter une ou plusieurs ensembles dans le domaine
J'espère que vous aurez l'idée, votre écrivain de texte personnalisé peut ensuite synchroniser la sortie au besoin. Je ne sais pas si le domaine de l'application enfant hériterait de la console personnalisée du domaine parent.Out/Error ou non, vous pouvez également essayer de simplifier le code requis.
Dans mon cas, le parent appDomain - créé par vstesthost.exe - ne semble pas avoir de console/erreur du tout. Ne change pas votre point si ... –
- 1. application Windows console ouverte et écrire
- 2. log4net across appdomains
- 3. .NET System.OutOfMemoryException et AppDomains
- 4. Types de partage entre AppDomains
- 5. Passage d'objets à travers Appdomains
- 6. Mot-clé 'ref' et AppDomains
- 7. Conserver la session ASP.NET ouverte/en vie
- 8. AppDomains vs. un serveur robuste
- 9. conservez la console windows ouverte après une erreur de syntaxe python
- 10. Privilèges d'élévation pour l'UAC à l'aide de la nouvelle fenêtre de console ouverte manifeste
- 11. Démarrage bêta de Visual Studio 2010 sans débogage La console ne reste pas ouverte
- 12. Impossible de passer un GCHandle sur AppDomains
- 13. Comment puis-je maintenir une connexion SMTP ouverte avec smtplib et Python?
- 14. Ajax Div maintenir la hauteur
- 15. Android: Comment maintenir la rétrocompatibilité?
- 16. Maintenir la publication avec WebForm_DoCallback
- 17. Maintenir la session active C#
- 18. Résumé classes de base et appdomains
- 19. Console app avec Qt Creator sur Windows: attendez avant de fermer la console
- 20. Assemblages mystérieusement chargés dans les nouveaux AppDomains
- 21. AppDomains sont créés pour chaque demande?
- 22. Comment empêcher la fermeture de la fenêtre de console lors de l'exécution d'une application de console?
- 23. Position de réglage d'une fenêtre de console ouverte dans une WinForms App
- 24. Comment fermer une fenêtre de console "orpheline" qui a été ouverte depuis Visual Studio?
- 25. comment maintenir la vitesse de scroller?
- 26. Comment maintenir la taille de JTextArea constante?
- 27. Comment faire pour maintenir la session
- 28. UNIX, comment maintenir la structure du répertoire?
- 29. Maintenir le code proche de la panne
- 30. Maintenir comptage après la création NSString
Vous ne pouvez pas lancer ces applications de console en tant que processus distincts? – Grzenio
En tant que test d'intégration, je pourrais vouloir exécuter peut-être 200 d'entre eux en même temps. C'est trop de processus dans mon livre. De plus, j'obtiendrai de meilleures performances dans un processus car, par exemple, toutes les instances utiliseront un seul ThreadPool. –