Splash screen loading slow on Vista?

M

Matt

My app (.NET 2.0) has a very basic splash screen (borderless form) that I
load manually early in app startup. It works fine on XP.

On Vista, the app takes longer to load. In a few moments, the splash
screen is replaced with a blank form of the same size with a title bar,
which reads "<form text property> (Not Responding)". After a few moments
more the app continues normally.

It looks like Vista is impatient with the app load time and decides to
repaint my borderless form with blank content and a title bar that includes
a warning to the user.

This is very ugly. It basically defeats the purpose of the splash screen.

Has anyone else seen this (or similar)? Does anyone have any suggestions
for convincing Vista to be patient and leave the splash screen as is?

Thanks,
Matt

P.S. This splash screen is a manually loaded form, not the application-
block splash screen code that you can add in from Visual Studio.
 
I

Ignacio Machin ( .NET/ C# MVP )

My app (.NET 2.0) has a very basic splash screen (borderless form) that I
load manually early in app startup.  It works fine on XP.

On Vista, the app takes longer to load.  In a few moments, the splash
screen is replaced with a blank form of the same size with a title bar,
which reads "<form text property> (Not Responding)".  After a few moments
more the app continues normally.

It looks like Vista is impatient with the app load time and decides to
repaint my borderless form with blank content and a title bar that includes
a warning to the user.

This is very ugly.  It basically defeats the purpose of the splash screen.

Has anyone else seen this (or similar)?  Does anyone have any suggestions
for convincing Vista to be patient and leave the splash screen as is?

Thanks,
Matt

P.S.  This splash screen is a manually loaded form, not the application-
block splash screen code that you can add in from Visual Studio.

Can you post your code?
Without seeing it it's kind of difficult to know what you are doing
 
M

Matt

Can you post your code?
Without seeing it it's kind of difficult to know what you are doing

Sure:


public static frmMaster fMaster;
public static frpSplash fSplash;

[STAThread]
static void Main()
{
try
{
bool bIsFirstInstance;
System.Threading.Mutex mutex = new
System.Threading.Mutex(false, "Global\\HSDExeMutex", out
bIsFirstInstance);

if (bIsFirstInstance) {
Application.SetCompatibleTextRenderingDefault
(false);
Application.EnableVisualStyles();
fSplash = new frpSplash();
fSplash.Show();
fSplash.Refresh();
fSplash.RefreshLabels();

//snipped app init methods, including database init, where the slowdown
//presumably is.
//snipped long Application.ThreadException handler

fMaster = new frmMaster();
Application.Run(fMaster);
}
else {
//snipped long mutex fail messagebox.show
}
}
catch (Exception x)
{
HandleTopException(x);
}
}



//then, in frmMaster, we close the splash screen using the ref we
//set up in app init

private void frmMaster_Load(object sender, System.EventArgs e)
{
CheckAndWarnScreenSettings();

HSDMain.fSplash.CloseSplash(); //does what it says

//snip remaining frmMaster load stuff
}


Thanks for the reply, happy to answer any further questions.

Matt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top