Вы звоните ShowDialog()
дважды. Это не может быть хорошо.
Не храните результат в двух переменных (loginSuccessful
, loginRetry
), потому что тогда у вас одна и та же информация хранится в двух местах. Попробуйте вместо:
switch (login.ShowDialog())
{
case DialogResult.OK:
Application.Run(new Form1());
return;
case DialogResult.Retry:
Application.Run(new Login());
return;
default:
throw new Exception("unexpected dialog result");
}
Не думаю, что вам следует звонить Application.Run()
во вложенном контексте, но у меня нет точных данных по этому поводу. Возможно зацикливание на login.ShowDialog()
, пока не вернется OK.
Не похоже, что система аутентификации возвращает DialogResult
, чтобы указать успешность аутентификации. эти значения указывают, какие кнопки были нажаты.
Вы не показали нам контекст этого кода, но держу пари, что он небезопасен. Большинство опытных программистов борются с безопасностью (включая меня). Наличие опытного программиста - это путь к катастрофе.
Пока я в этом, я бы назвал класс диалога с Dialog
, как в LoginDialog
. Если его назвать Login
, это вскоре приведет к конфликту имен.