/// <summary> /// /// </summary> /// <see cref="IScriptExecutor.Execute(IEnumerable{char}, bool, bool)" /> public IScriptExecutionContext Execute(IEnumerable <char> src, bool autoStart, bool debug) { lock (this._SYNC) { this.ThrowIfDisposed(); ScriptExecutionContext result = new ScriptExecutionContext(); result.Executor = this; result.Source = StringHelper.AsString(src); result.IsDebug = debug; result.StartAction = delegate() { OnExecuteContext onExecCtx = new OnExecuteContext(); try { onExecCtx.IsDebug = result.IsDebug; onExecCtx.Source = result.Source; onExecCtx.StartTime = DateTimeOffset.Now; this.OnExecute(onExecCtx); } finally { result.Result = onExecCtx.ScriptResult; } }; if (autoStart) { result.Start(); } return(result); } }