[Gtk-sharp-list] How to implement a splash screen?

DarkPhoenix alexschrod at gmail.com
Sat Mar 28 11:11:30 EDT 2009


Hi.

I'm having an issue with Gtk#. It's probably just through my own
incompetence.

I want to do something similar to when MonoDevelop loads in my application;
show a splash screen while the heavy duty loading takes place, and then show
the main window. I have created a Gtk# project, with the standard
initialization routine:

public static void Main (string[] args)
{
	Application.Init();
	MainWindow window = new MainWindow();
	window.Show();
	Application.Run();
}

My problem is that before Application.Run(), nothing will show in Gtk, so I
can't do a splash screen and loading before it.

I tried this as a test:

public static void Main (string[] args)
{
	Application.Init();
	
	SplashScreen splash = new SplashScreen();
	splash.Show();
	
	// Pretend we're doing some heavy work...
	System.Threading.Thread.Sleep(5000);
	
	splash.Hide();
	splash = null;
	
	MainWindow window = new MainWindow();
	window.Show();
	Application.Run();
}

And of course it didn't work, it stalled for five seconds and then the main
window showed.

I tried placing the Application.Run() right after splash.Show(). Not a very
bright idea either; the code stopped executing there, the splash window
never got hidden, and the main window never got shown.

I even tried running the code on a separate thread, which wasn't much help
either; nothing ended up getting shown:

public static void ThreadSplash()
{
	SplashScreen splash = new SplashScreen();
	splash.Show();
	
	System.Threading.Thread.Sleep(5000);
	splash.Hide();
	splash = null;
	
	MainWindow window = new MainWindow();
	window.Show();
}

public static void Main (string[] args)
{
	Application.Init();
	
	Thread t = new Thread(ThreadSplash);
	t.Start();
	
	Application.Run();
}

This would all work out if I could figure out a way to run code after
Application.Run() without requiring any user input. Which I've been
unsuccessful at so far. That is why I'm here. I am hoping that one of you on
this forum can help me solve this problem.
-- 
View this message in context: http://www.nabble.com/How-to-implement-a-splash-screen--tp22757836p22757836.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.



More information about the Gtk-sharp-list mailing list