Exemplo n.º 1
0
        public override IAsyncResult BeginExecute(ControllerContext controllerContext, IDictionary <string, object> parameters, AsyncCallback callback, object state)
        {
            Task result = new ReflectedActionDescriptor(this.MethodInfo, this.ActionName, this.ControllerDescriptor).Execute(controllerContext, parameters) as Task;

            if (result == null)
            {
                throw new InvalidOperationException(String.Format("Method {0} should have returned a Task!", (object)this.MethodInfo));
            }
            else
            {
                if (callback != null)
                {
                    result.ContinueWith((Action <Task>)(_ => callback((IAsyncResult)result)));
                }
                return((IAsyncResult)result);
            }
        }