В основном у меня есть основная форма, которая при загрузке открывает дочернюю форму для входа в систему пользователя. Когда они отменяют или закрывают эту форму для входа, мне нужно закрыть все приложение.
Но, похоже, существует несколько способов закрыть программу С#:
-
Application.Exit();
-
Application.ExitThread();
-
Environment.Exit(1);
-
Process.GetCurrentProcess().Kill();
-
SFTPClient.LDAPLoggedIn = false; Close();
EDIT: Извините, если это не ясно: оно устанавливает свойство в объекте контроллера, чтобы указать, что сбой входа. После открытия дочерней формы я бы проверил это свойство в родительской форме, чтобы узнать, должна ли программа продолжать или нет. Это в основном переносит ответственность за выход из программы родителям без исключения.
6: throw new Exception("User closed the form");
Я вижу, что есть два способа его обработки:
- Информирование родителя о том, что что-то пошло не так (как в 5 и 6.)
- Закрытие программы из дочерней формы.
Является ли одна из этих двух рассмотренных лучше?
Каждый подход, похоже, оказывает такое же влияние на мою программу, но как они действительно сравниваются?
UPDATE: Спасибо за ответы. Для тех, кто ищет этот вопрос в будущем и любопытных людей, это было моим решением в конце:
private void FormMain_Load(object sender, EventArgs e)
{
if (new FormLogin().ShowDialog(this) == DialogResult.Cancel) Close();
}
и
private void buttonCancel_Click(object sender, EventArgs e)
{
Close();
}
Я обнаружил, что когда форма закрывается нажатием кнопки "X", DialogResult устанавливается на "Отмена автоматически", поэтому все, что мне нужно сделать, это Close()