Ejemplo n.º 1
0
        IAsyncResult ISynchronizeInvoke.BeginInvoke(Delegate method, object[] args)
        {
            var result = new InvokeResult();

            object Invoke()
            {
                try
                {
                    return(method.DynamicInvoke(args));
                }
                catch (Exception ex)
                {
                    result.ExceptionThrown = true;
                    return(ex);
                }
            }

            if (!InvokeRequired)
            {
                result.Finish(Invoke(), true);
            }
            else
            {
                StartSyncInvoke(() => result.Finish(Invoke(), false));
            }

            return(result);
        }