. . . // called from another thread. private void Scraper_Done(IAsyncResult Result) { ArrayList lst = Scraper.EndScrape(Result); GLib.Idle.Add(new GLib.IdleHandler(GtkSync_Scraper_Done)); } . . . private bool GtkSync_Scraper_Done() { SetEnables(); FireMsgEvent("Scraper is done."); FireStatusEvent("Scraper is done."); return false; }