конец .net против form.close () против application.exit cleaner способ закрыть приложение

<p>иногда, когда я использую form.close () при отладке моей программы, хотя форма закрыта, приложение все еще работает. я заметил это поведение при использовании функции msgbox.</p><p>у меня нет ни потока, ни таймера, так что как лучше закрыть приложение .net? я использую vb.net.</p><p>спасибо</p>

<p>ситуация, которую вы описываете, довольно подозрительна. всякий раз, когда вы закрываете форму запуска вашей программы, все приложение должно автоматически закрываться, включая закрытие <em>всех других открытых форм</em>. убедитесь, что вы закрываете правильную форму, и у вас не должно возникнуть никаких проблем.</p><p>другая возможность заключается в том, что вы изменили свой проект (используя его страницу свойств), чтобы он не закрывался до тех пор, пока <em>все</em> открытые окна не будут закрыты. в этом режиме ваше приложение не закроется, пока не будет закрыта оставшаяся открытая форма <em>last</em>. если вы выбрали этот параметр, вы должны убедиться, что вы вызываете метод <code>close</code> <em>all</em> форм, которые вы показывали в ходе применения, а не только форму запуска/основную форму.</p><p>первая настройка по умолчанию является причиной, и если вы ее изменили, вы, вероятно, захотите исправить ее.<br> на сегодняшний день это наиболее интуитивная модель для обычных приложений, которая предотвращает именно ту ситуацию, которую вы описываете. для правильной работы убедитесь, что вы указали свою форму <em>main</em> в качестве «формы запуска» (а не заставку или форму входа в систему).</p><p>настройки, о которых я говорю, выделены здесь:</p><p><img src="https://i.stack.imgur.com/zfyew.png" alt="visual studio project properties"></p><p>но прежде всего обратите внимание, что<strong> вам никогда не придется вызывать <code>application.exit</code> в правильно разработанном приложении </strong>. если вам нужно сделать это для того, чтобы ваша программа полностью закрылась, значит, вы делаете что-то не так. само по себе это не плохая практика, если у вас есть на то веские основания. два других ответа не могут это объяснить, и поэтому я чувствую, что они в лучшем случае неполны.</p>

<p>в .net 1.1 и более ранних версиях <a href="http://msdn.microsoft.com/en-us/library/ms224252(vs.71).aspx">application.exit не было разумного выбора</a> , и документы msdn специально рекомендовались против него, поскольку вся обработка сообщений немедленно прекращалась.</p><p>в более поздних версиях, однако, <a href="http://msdn.microsoft.com/en-us/library/ms224252(v=vs.100).aspx">вызов application.exit</a> приведет к тому, что form.close будет вызываться во всех открытых формах в приложении, что дает вам возможность очистить себя или даже отменить операцию все вместе.</p>

<p>если вы находитесь в цикле (do while, for, ...) и вызываете <code>me.close()</code>, вы должны выполнить команду exit (exit do, ...) или <code>return()</code>, чтобы принудительно завершить обработку сообщения. я поймал зависание программ из-за этого.</p>

<p>form.close () используется для закрытия экземпляра form в приложении .net, оно не уничтожает все приложение. application.exit () убивает ваше приложение.</p>