Como posso fechar um formulário de login e mostrar o formulário principal sem que meu aplicativo seja fechado?

Tenho dois formulários no meu projeto (Login e Principal).

O que estou tentando realizar é que, se o login for bem-sucedido, devo mostrar o formulário Principal e fechar o formulário de Login.

Eu tenho esse método no formulário de logon que fecha o formulário de logon quando o logon é bem-sucedido. Mas o formulário principal não aparece.

public void ShowMain()
{
    if(auth()) // a method that returns true when the user exists.
    {             
        var main = new Main();
        main.Show();
        this.Close();
    }
    else
    {
        MessageBox.Show("Invalid login details.");
    }         
}

Tentei ocultar o formulário de logon se o processo de logon for bem-sucedido. Mas isso me incomoda, porque eu sei que enquanto meu programa está executando o formulário de login ainda está lá, ele deve ser fechado, certo?

Qual deve ser a abordagem correta para isso? Obrigado...

questionAnswers(14)

yourAnswerToTheQuestion