private bool TryWrappedBindAndInvoke(DynamicMetaObjectBinder binder, object[] args, out object result) { object tempResult = null; var succeeded = Engine.ScriptInvoke(() => { if (!TryBindAndInvoke(binder, Engine.MarshalToScript(args), out tempResult)) { if ((Engine.CurrentScriptFrame != null) && (lastScriptError == null)) { lastScriptError = Engine.CurrentScriptFrame.ScriptError; } return(false); } return(true); }); if (succeeded) { result = Engine.MarshalToHost(tempResult, false).ToDynamicResult(Engine); return(true); } result = null; return(false); }