public static object Invoke(Delegate method, params object[] args)
    {
      Contract.Requires(method != null);

      object result = null;

      SafeMethodInvoker invoker = new SafeMethodInvoker(method, args);
      if (UIThreadInvoker.threadControl.InvokeRequired)
        result = UIThreadInvoker.threadControl.Invoke(new Invoker(invoker.Invoke));
      else
        result = invoker.Invoke();
      invoker.Rethrow();

      return result;
    }
        public static object Invoke(Delegate method)
        {
            Contract.Requires(method != null);

            object            result  = null;
            SafeMethodInvoker invoker = new SafeMethodInvoker(method, null);

            if (UIThreadInvoker.threadControl.InvokeRequired)
            {
                result = UIThreadInvoker.threadControl.Invoke(new Invoker(invoker.Invoke));
            }
            else
            {
                result = invoker.Invoke();
            }
            invoker.Rethrow();

            return(result);
        }