So, what if you need to pop up a dialog box that could potentially abort the application before you pop up your main form? There are usually no good reasons to construct objects that you don't intend to use. That would include opening a Form which will immediately be closed. But is the following acceptable? I know it's possible... I'm doing it. But what could go wrong in this situation? This must be bad in some way that I haven't found yet.
[STAThread]
static void Main()
{
//let the user choose a database before we start the program
DialogResult dr = frmDatabases.Instance.ShowDialog();
if(dr == DialogResult.OK)
Application.Run(new frmMain());
}