В основном у меня есть основная форма, которая при загрузке открывает дочернюю форму для входа в систему пользователя.Когда они отменяют или закрывают эту форму входа, мне нужно закрыть все приложение.
Но, похоже, есть несколько разных способов закрыть программу на C #:
Application.Exit();
Application.ExitThread();
Environment.Exit(1);
Process.GetCurrentProcess().Kill();
SFTPClient.LDAPLoggedIn = false; Close();
РЕДАКТИРОВАТЬ: Извините, если это не ясно: Он устанавливает свойство в объекте контроллера, чтобы указать, чтоВход в систему не удался.После открытия дочерней формы я бы проверил это свойство в родительской форме, чтобы увидеть, должна ли программа продолжаться или нет.Это в основном переносит ответственность за выход из программы на родителя без исключения.
6: throw new Exception("User closed the form");
Я вижу, что есть два способа справиться с этим:
- Информирование родителя о том, что что-то пошло не так (как в 5 и 6).
- Закрытие программы из дочерней формы.
Любой из этих двухсчитается лучшей практикой?
Кажется, что каждый подход оказывает одинаковое влияние на мою программу, но как они на самом деле сравниваются?
ОБНОВЛЕНИЕ: Спасибо за ответы.Для тех, кто ищет этот вопрос в будущем и для любопытных людей, это было мое решение в конце:
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()