public void InvokeOnMainLoop (GuiUnit.InvokerHelper helper) { var invokeOnMainThreadMethods = Application.GetMethods (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); var invokeOnMainThreadMethod = invokeOnMainThreadMethods.First (d => d.Name == "Invoke" && d.GetParameters ().Length == 1); EventHandler invoker = delegate { helper.Invoke (); }; invokeOnMainThreadMethod.Invoke (null, new [] { invoker }); }