The issue is that the splash screen won't be dismissed until the startup form is ready to be displayed but the startup form is not ready to be displayed until it's Load event handler has been executed. Displaying the message on a different thread is not the solution because then it's not modal to the startup form anyway, so it won't stop the startup form being displayed. The obvious solution is to display the message in the Shown event handler instead of Load, as long as displaying the message immediately after the startup form is displayed rather than just before is OK. If that's a problem, you simply cannot use the standard splash screen functionality and have this form be the startup form. There are ways to achieve what you want but they will require more work.