Подтвердить что ты не робот

.NET End vs Form.Close() vs Application.Exit Чистый способ закрыть одно приложение

иногда, когда я использую Form.close() при отладке моей программы, хотя форма закрыта, приложение все еще работает. Я заметил это поведение при использовании функции msgbox.

У меня нет ни потока, ни таймера, так что лучший способ закрыть приложение .NET? Я использую VB.NET.

Спасибо

4b9b3361

Ответ 1

Ситуация, которую вы описываете, довольно подозрительна. Всякий раз, когда вы закрываете свою форму запуска программы, все приложение должно автоматически закрываться, включая закрытие всех остальных открытых форм. Убедитесь, что вы закрываете правильную форму, и вы не должны испытывать никаких проблем.

Другая возможность заключается в том, что вы изменили свой проект (используя страницу "Свойства" ), чтобы закрыть его, пока все открытые окна не будут закрыты. В этом режиме ваше приложение не будет завершено, пока не будет закрыта последняя оставшаяся открытая форма. Если вы выбрали этот параметр, вы должны убедиться, что вы вызываете метод Close всех форм, которые вы показывали в ходе приложения, а не только стартап/основная форма.

Первый параметр по умолчанию по умолчанию, и если вы его изменили, вы, вероятно, захотите его исправить.
Это, безусловно, самая интуитивная модель для обычных приложений, и она полностью предотвращает описанную ситуацию. Чтобы он работал правильно, убедитесь, что вы указали свою основную форму как "форму запуска" (а не заставку или регистрационную форму).

Настройки, о которых я говорю, выделены здесь:

    Visual Studio Project Properties

Но прежде всего обратите внимание, что вам никогда не придется вызывать Application.Exit в правильно разработанном приложении. Если вам нужно сделать это, чтобы ваша программа полностью закрылась, вы делаете что-то неправильно. Делать это не плохая практика сама по себе, если у вас есть веская причина. Остальные два ответа не могут объяснить это, и, таким образом, я чувствую себя неполным в лучшем случае.

Ответ 2

В .Net 1.1 и более ранних версиях Application.Exit не был разумным выбором, и рекомендованные против него документы MSDN, поскольку вся обработка сообщений прекратилась немедленно.

В более поздних версиях вызов Application.Exit приведет к тому, что Form.Close будет вызываться во всех открытых формах приложения, что даст вам возможность убрать после себя или даже полностью отменить операцию.

Ответ 3

Если вы находитесь в цикле (Do While, For,...), и вы вызываете Me.Close(), вы должны следовать команде Exit (Exit Do,...) или Return(), чтобы заставить сообщение для правильной работы. Из-за этого я поймал программы, зависящие от этого.

Ответ 4

Form.Close() используется для закрытия экземпляра формы с помощью приложения .NET, он не убивает все приложение. Application.exit() убивает ваше приложение.

Ответ 5

Application.Exit() убивает ваше приложение, но есть некоторые случаи, когда он не закрывает приложение.

End лучше, чем Application.Exit().

Ответ 6

Просто введите ключевое слово "Конец" в свой код.

Sub Form_Load()
  Dim answer As MsgBoxResult
  answer = MsgBox("Do you want to quit now?", MsgBoxStyle.YesNo)
  If answer = MsgBoxResult.Yes Then
      MsgBox("Terminating program")
      End 
  End If 
End Sub