Ответ 1
Я уверен, что вы не можете повлиять или изменить это поведение.
Как вы помните, это не имеет никакого отношения к вашему приложению, потому что он не делает этого, когда вы дважды щелкаете по EXE. Вы видите этот эффект только при запуске приложения из Visual Studio без прикрепленного отладчика.
Предположительно, когда вы вызываете Ctrl + F5, Visual Studio запускает ваше приложение определенным образом, что заставляет окно консоли оставаться открытым. Я могу думать о двух способах, которые это может сделать:
%COMSPEC% /k "C:\Path\To\YourApplication.exe"
или
%COMSPEC% /c ""C:\Path\To\YourApplication.exe" & pause"
При любом из этих действий поведение приостановки, которое вы видите, выпекается прямо в команде, используемой для запуска вашего приложения, и поэтому является внешним для вашего приложения. Поэтому, если у вас нет доступа к источникам Visual Studio, вы не собираетесь его изменять. Вызов функции exit
из вашего приложения не будет иметь никакого эффекта, потому что ваше приложение уже завершено к моменту появления этого сообщения.
Конечно, я не понимаю, почему это действительно важно, кроме вопроса любопытства. Этого не происходит, когда вы запускаете приложение с прикрепленным отладчиком, что вы будете делать в 99% случаев при запуске приложения из среды IDE. И поскольку вы не отправляете Visual Studio вместе с вашим приложением, ваши пользователи будут запускать приложение вне VS.
В ответ на обновления, внесенные в ваш вопрос, лучшим решением было бы изменить ваше приложение, чтобы оно не было консольным приложением. Такое поведение не влияет на стандартные приложения Windows; когда они закрываются, они закрываются навсегда.
Если вы не требуете вывода в окне консоли, это очень просто: просто измените "Тип приложения" в ваших свойствах проекта. Приложение Windows Forms будет работать отлично. Если вы не отобразите окно (aka form), оно не будет автоматически создано. В этом разница между обычными приложениями Windows и консольными приложениями, которые всегда создают консольное окно, независимо от того, нужен он вам или нет.
Если вам нужно отобразить вывод в окне консоли, у вас есть несколько вариантов:
- Создайте и используйте простую форму с помощью элемента управления ListBox или ListView. Каждая строка, которую вы обычно выводите на консоль, вы добавляете в новый элемент в элемент управления списком. Это хорошо работает, если вы не используете какие-либо "расширенные" функции консоли.
- P/Вызвать и вызвать функцию
AllocConsole
для создания консоли, которую может использовать приложение Windows. Вам не нужна форма для этого.