private IAsyncResult BeginInvokeSynchronousActionMethod( ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary <string, object> parameters, AsyncCallback callback, object state ) { // Frequently called so ensure delegate remains static and arguments do not allocate EndInvokeDelegate <ActionInvocation, ActionResult> endInvokeFunc = ( asyncResult, innerInvokeState ) => { return(innerInvokeState.InvokeSynchronousActionMethod()); }; ActionInvocation endInvokeState = new ActionInvocation( this, controllerContext, actionDescriptor, parameters ); return(AsyncResultWrapper.BeginSynchronous( callback, state, endInvokeFunc, endInvokeState, _invokeActionMethodTag )); }
private IAsyncResult BeginInvokeSynchronousActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary <string, object> parameters, AsyncCallback callback, object state) { return(AsyncResultWrapper.BeginSynchronous(callback, state, () => InvokeSynchronousActionMethod(controllerContext, actionDescriptor, parameters), _invokeActionMethodTag)); }