// ReSharper disable ParameterHidesMember private object Execute(V8Script script, bool evaluate) { MiscHelpers.VerifyNonNullArgument(script, "script"); VerifyNotDisposed(); return(MarshalToHost(ScriptInvoke(() => { if (inContinuationTimerScope || (ContinuationCallback == null)) { return proxy.Execute(script, evaluate); } var state = new Timer[] { null }; using (state[0] = new Timer(unused => OnContinuationTimer(state[0]), null, Timeout.Infinite, Timeout.Infinite)) { inContinuationTimerScope = true; try { state[0].Change(continuationInterval, Timeout.Infinite); return proxy.Execute(script, evaluate); } finally { inContinuationTimerScope = false; } } }), false)); }
// ReSharper disable ParameterHidesMember /// <summary> /// Evaluates a compiled script. /// </summary> /// <param name="script">The compiled script to evaluate.</param> /// <returns>The result value.</returns> /// <remarks> /// For information about the types of result values that script code can return, see /// <see cref="ScriptEngine.Evaluate(string, bool, string)"/>. /// </remarks> public object Evaluate(V8Script script) { MiscHelpers.VerifyNonNullArgument(script, "script"); VerifyNotDisposed(); return(MarshalToHost(ScriptInvoke(() => { var stateObjects = new object[2]; using (var timer = new Timer(OnContinuationTimer, stateObjects, Timeout.Infinite, Timeout.Infinite)) { stateObjects[0] = new WeakReference(this); stateObjects[1] = timer; timer.Change(continuationInterval, Timeout.Infinite); return proxy.Execute(script); } }), false)); }