Qual é a diferença entre Application.Run () e Form.ShowDialog ()?

No meu aplicativo, quero mostrar primeiro um formulário de login e, em seguida, o formulário principal, se o login tiver sido bem-sucedido. Atualmente estou fazendo algo parecido com isto:

var A = new LoginForm();
if ( A.ShowDialog() == DialogResult.OK )
    Application.Run(new MainForm());

Mas então comecei a me perguntar - qual é o sentido daApplication.Run()? Por que não fazer(new MainForm()).ShowDialog() também? Qual é a diferença? E qual seria a maneira correta de conseguir o que eu quero?

questionAnswers(8)

yourAnswerToTheQuestion