Splash screen loading slow on Vista?

  • Thread starter Thread starter Matt
  • Start date Start date
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.
 
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
 
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
 
Back
Top