private void OnException(Task <ScriptState <object> > t, object state) { _consoleRedirect.Dispose(); var ex = t.Exception; VSTools.LogError(ex); VSTools.LogEndRunning(true); var executionEnd = (Action <object, Exception>)state; executionEnd(null, ex); }
private void OnSuccess(Task <ScriptState <object> > t, object state) { _consoleRedirect.Dispose(); var result = t.IsCompleted ? t.Result : null; var exception = t.IsFaulted ? t.Exception : null; VSTools.LogEndRunning(t.IsFaulted); var executionEnd = (Action <object, Exception>)state; executionEnd(result, exception); }
public void Run(string sCode, Action <object, Exception> executionEnd) { _consoleRedirect = new ConsoleRedirect(); VSTools.LogStartRunning(); try { var result = CSharpScript.RunAsync(sCode, defaultOptions, globals: new Globals()); result.ContinueWith(OnException, executionEnd, TaskContinuationOptions.OnlyOnFaulted); result.ContinueWith(OnSuccess, executionEnd, TaskContinuationOptions.OnlyOnRanToCompletion); } catch (Exception ex) { _consoleRedirect.Dispose(); VSTools.LogError(ex); VSTools.LogEndRunning(true); executionEnd(null, ex); } }