I am using Gdk.Threads.Enter () and Gdk.Threads.Leave (). An example can be found here: http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/kurush/kurush/SaverThread.cs?rev=1.1.1.1&content-type=text/vnd.viewcvs-markup PS: You should use Gdk.Threads.Init (); before Application.Init (); Also, I don't know whether this is the right way.