Lors de l'exécution d'une application console dans Visual Studio via "Démarrer sans débogage" (Ctrl+F5), la console reste ouverte à la fin de la course et demande à
Appuyez sur n'importe quelle touche pour continuer . . .
nécessitant ainsi d'activer la fenêtre et d'appuyer sur une touche. Parfois, ce n'est pas approprié.
Pourquoi est-ce important? Au moment même où j'écris le code de sérialisation JSON, mon flux de travail est comme suit:
faites cela encore et encore, pas besoin de déboguer quoi que ce soit, il suffit de couper la sérialisation et de vérifier la sortie, c'est bien.
Il s’agit de workflows comme celui-ci, où le comportement "presse n’importe ..." est gênant car il nécessite les étapes suivantes:
Pas de réponses:
Je suis à peu près sûr que vous ne pouvez pas affecter ou changer ce comportement.
Comme vous l'avez dit, cela n'a rien à voir avec votre application, car elle ne le fait pas lorsque vous double-cliquez sur le fichier EXE. Vous ne voyez cet effet que lorsque vous exécutez l'application à partir de Visual Studio sans le débogueur attaché.
Vraisemblablement, quand vous invoquez Ctrl+F5, Visual Studio exécute votre application d’une manière particulière qui fait que la fenêtre de la console reste ouverte. Je peux penser à deux façons de le faire:
%COMSPEC% /k "C:\Path\To\YourApplication.exe"
ou
%COMSPEC% /c ""C:\Path\To\YourApplication.exe" & pause"
Dans les deux cas, le comportement de pause que vous observez est intégré à la commande utilisée pour lancer votre application et est donc externe à votre application. Ainsi, à moins que vous n'ayez accès aux sources Visual Studio, vous ne les modifierez pas. L'appel d'une fonction exit
à partir de votre application n'aura aucun effet, car votre application a déjà été fermée au moment où ce message apparaît.
Bien sûr, je ne vois pas pourquoi cela compte vraiment, mis à part un problème de curiosité. Cela ne se produit pas lorsque vous démarrez l'application avec le débogueur attaché, ce que vous ferez 99% du temps lorsque vous lancerez l'application à partir de l'EDI. Et puisque vous ne livrez pas Visual Studio avec votre application, vos utilisateurs vont démarrer l'application en dehors de VS.
En réponse aux mises à jour apportées à votre question, la meilleure solution serait de modifier votre application afin qu'elle ne soit pas une application console. Ce comportement n'affecte pas les applications Windows standard. quand ils sont fermés, ils ferment pour de bon.
Si vous n'avez besoin d'aucune sortie dans la fenêtre de la console, la procédure est très simple: il suffit de changez le "Type d'application" dans les propriétés de votre projet . Une application Windows Forms fonctionnera parfaitement. Si vous n’affichez pas de fenêtre (forme de fichier), on ne sera pas automatiquement créé. C'est la différence entre les applications Windows classiques et les applications console, qui créent toujours une fenêtre de console, que vous en ayez besoin ou non.
Si vous faites devez afficher la sortie dans la fenêtre de la console, vous avez deux possibilités:
AllocConsole
pour créer une console utilisable par votre application Windows. Vous n'avez pas besoin d'un formulaire pour cela.J'ai trouvé une solution qui fonctionne si vous utilisez python (je ne pouvais rien tester d'autre). Vous devez aller à
Outils -> Options -> Outils Python -> Débogage
Décochez la case Wait for input when process exits normally
.
J'espère que vous pourrez appliquer cela en quelque sorte à votre problème.
Eh bien, au moins dans Visual Studio 2010, taper
Console.ReadKey(true);
Supprime le "Appuyez sur n'importe quelle touche pour continuer ....."
Avez-vous essayé (c #)?
Environment.Exit(0)
Il y a une excellente réponse ici dans une question très liée:
https://stackoverflow.com/a/15135181/122687
Je pense que c'est mieux que la réponse acceptée car cela ne vous oblige pas à appeler AllocConsole
et à configurer une redirection IO. Je ne sais pas comment il est facile et robuste de configurer la redirection IO.