static void Main(string[] args) { AutoResetEvent termEvent = new AutoResetEvent(false); var thread = new Thread(async() => { try { Console.WriteLine($"*** Welcome, {WonbeLib.Wonbe.GetMyName()} Command Line ***"); var info = new LanguageBaseStartInfo(); info.CommandLine = Environment.CommandLine; if (args.Length > 0) { info.SourceCodeFileName = args[0]; } info.RunRequest = args.Length > 0; var env = new WonbeEnviroment(); var b = new WonbeLanguageBase(); b.Environment = env; Console.CancelKeyPress += (sender, e) => { IsCanceled = true; e.Cancel = true; }; await b.InvokeInterpreterAsync(info, () => IsCanceled, (v) => IsCanceled = v); } finally { termEvent.Set(); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); termEvent.WaitOne(); }
static async Task Main(string[] args) { Console.WriteLine($"*** Welcome, {WonbeLib.Wonbe.GetMyName()} Command Line ***"); var info = new LanguageBaseStartInfo(); info.CommandLine = Environment.CommandLine; if (args.Length > 0) { info.SourceCodeFileName = args[0]; } info.RunRequest = args.Length > 0; var env = new WonbeEnviroment(); var b = new WonbeLanguageBase(); b.Environment = env; Console.CancelKeyPress += async(sender, e) => { IsCanceled = true; e.Cancel = true; }; await b.InvokeInterpreterAsync(info, () => IsCanceled, (b) => IsCanceled = b); }
public override Task InvokeCompilerAsync(LanguageBaseStartInfo startInfo) => throw new NotImplementedException();
public override async Task InvokeInterpreterAsync(LanguageBaseStartInfo startInfo, Func <bool> breakFlagGetter, Action <bool> breakFlagSetter) { var instance = new WonbeLib.Wonbe(Environment, breakFlagGetter, breakFlagSetter); await instance.SuperMain(startInfo.RunRequest, startInfo.SourceCodeFileName); }