private void ExecuteWinWrapBasic() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); // Extend WinWrap Basic scripts with Examples.Extensions assembly // Add "Imports Examples.Extensions" to all WinWrap Basic scripts // Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { throw basicNoUIObj.Error.Exception; } using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) // script parsing error { throw basicNoUIObj.Error.Exception; } using (var instance = basicNoUIObj.CreateInstance(ScriptPath(Script) + "<IncidentAction")) { // Execute script code via an interface IIncidentAction action = instance.Cast <IIncidentAction>(); TheIncident.Start(action, this.Text); } } } catch (WinWrap.Basic.TerminatedException) { // script execution terminated, ignore error } catch (Exception ex) { // script caused an exception basicNoUIObj.ReportError(ex); } } TheIncident = null; }
private void ExecuteWinWrapBasic() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); // Extend WinWrap Basic scripts with Examples.Extensions assembly // Add "Imports Examples.Extensions" to all WinWrap Basic scripts // Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) throw basicNoUIObj.Error.Exception; using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) // script parsing error throw basicNoUIObj.Error.Exception; using (var instance = basicNoUIObj.CreateInstance(ScriptPath(Script) + "<IncidentAction")) { // Execute script code via an interface IIncidentAction action = instance.Cast<IIncidentAction>(); TheIncident.Start(action, this.Text); } } } catch (WinWrap.Basic.TerminatedException) { // script execution terminated, ignore error } catch (Exception ex) { // script caused an exception basicNoUIObj.ReportError(ex); } } TheIncident = null; }
private void buttonRunScript_Click(object sender, EventArgs e) { TheIncident = new Incident(); InstanceAndTimestamp mt = new InstanceAndTimestamp(); string path = ScriptPath(Script); DateTime timestamp = File.GetLastWriteTimeUtc(path); if (mts.TryGetValue(path, out mt) && mt.timestamp != timestamp) { // file has changed, dump instance from cache mt.Dispose(); mts.Remove(path); mt = new InstanceAndTimestamp(); } try { if (mt.module == null) { // module has not been parsed mt.module = basicNoUIObj.ModuleInstance(path, false); if (mt.module == null) { // script parsing error LogError(basicNoUIObj.Error); } else { // create an instance mt.instance = basicNoUIObj.CreateInstance(path + "<IncidentAction"); // cache the instance with a timestamp mt.timestamp = File.GetLastWriteTimeUtc(path); mts.Add(path, mt); } } if (mt.instance != null) { // Execute script code via an interface DateTime tstart2 = DateTime.Now; IIncidentAction action = mt.instance.Cast <IIncidentAction>(); ScriptingLanguage.TheIncident.Start(action, "Form1"); TimeSpan ts2 = DateTime.Now - tstart2; Debug.Print(ts2.ToString()); } } catch (WinWrap.Basic.TerminatedException) { // script execution terminated, ignore error } catch (Exception ex) { // script caused an exception basicNoUIObj.ReportError(ex); } if (mt.instance == null && mt.module != null) { // release module mt.Dispose(); } TheIncident = null; }