GLib.Idle is the UI thread, you want ThreadPool.QueueUserWorkItem()