public void Run(ProgramBlock program, string options) { if (program.IsRunning) { return; } // if (program.ProgramThread != null) { program.Stop(); program.IsRunning = false; } // program.IsRunning = true; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Running"); // program.TriggerTime = DateTime.UtcNow; program.ProgramThread = new Thread(() => { MethodRunResult result = null; try { result = program.Run(options); } catch (Exception ex) { result = new MethodRunResult(); result.Exception = ex; } // if (result != null && result.Exception != null) { // runtime error occurred, script is being disabled // so user can notice and fix it List <ProgramError> error = new List <ProgramError>() { program.GetFormattedError(result.Exception, false) }; program.ScriptErrors = JsonConvert.SerializeObject(error); program.IsEnabled = false; RaiseProgramModuleEvent(program, Properties.RUNTIME_ERROR, "CR: " + result.Exception.Message.Replace('\n', ' ').Replace('\r', ' ')); } program.IsRunning = false; program.ProgramThread = null; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Idle"); }); // if (program.ConditionType == ConditionType.Once) { program.IsEnabled = false; } // try { program.ProgramThread.Start(); } catch { program.Stop(); program.IsRunning = false; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Idle"); } // //Thread.Sleep(100); }
// TODO: v1.1 !!!IMPORTANT!!! move thread allocation and starting to ProgramEngineBase.cs class public void Run(ProgramBlock program, string options) { if (program.IsRunning) return; if (program.Engine.ProgramThread != null) { program.Engine.Stop(); program.IsRunning = false; } program.IsRunning = true; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Running"); program.TriggerTime = DateTime.UtcNow; program.Engine.ProgramThread = new Thread(() => { MethodRunResult result = null; try { result = program.Run(options); } catch (Exception ex) { result = new MethodRunResult(); result.Exception = ex; } // if (result != null && result.Exception != null && !result.Exception.GetType().Equals(typeof(System.Reflection.TargetException))) { // runtime error occurred, script is being disabled // so user can notice and fix it List<ProgramError> error = new List<ProgramError>() { program.GetFormattedError(result.Exception, false) }; program.ScriptErrors = JsonConvert.SerializeObject(error); program.IsEnabled = false; RaiseProgramModuleEvent(program, Properties.RUNTIME_ERROR, "CR: " + result.Exception.Message.Replace('\n', ' ').Replace('\r', ' ')); } program.IsRunning = false; program.Engine.ProgramThread = null; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Idle"); }); // if (program.ConditionType == ConditionType.Once) { program.IsEnabled = false; } // try { program.Engine.ProgramThread.Start(); } catch { program.Engine.Stop(); program.IsRunning = false; RaiseProgramModuleEvent(program, Properties.PROGRAM_STATUS, "Idle"); } // //Thread.Sleep(100); }
public void Run(ProgramBlock program, string options) { if (program.IsRunning) { return; } // if (program.ProgramThread != null) { program.Stop(); program.IsRunning = false; } // program.IsRunning = true; RaiseProgramModuleEvent(program, "Program.Status", "Running"); // if (program.Type.ToLower() != "wizard") { if (program.Type.ToLower() == "csharp" && program.AppAssembly == null) { program.IsRunning = false; } else { program.TriggerTime = DateTime.UtcNow; program.ProgramThread = new Thread(() => { MethodRunResult result = null; try { result = program.Run(options); } catch (Exception ex) { result = new MethodRunResult(); result.Exception = ex; } // if (result != null && result.Exception != null) { // runtime error occurred, script is being disabled // so user can notice and fix it List <ProgramError> error = new List <ProgramError>() { new ProgramError() { CodeBlock = "CR", Column = 0, Line = 0, ErrorNumber = "-1", ErrorMessage = result.Exception.Message } }; program.ScriptErrors = JsonConvert.SerializeObject(error); program.IsEnabled = false; RaiseProgramModuleEvent( program, "Runtime.Error", "CR: " + result.Exception.Message.Replace( '\n', ' ' ) ); } program.IsRunning = false; program.ProgramThread = null; RaiseProgramModuleEvent(program, "Program.Status", "Idle"); }); // try { program.ProgramThread.Start(); } catch { program.Stop(); program.IsRunning = false; RaiseProgramModuleEvent(program, "Program.Status", "Idle"); } } } else { program.TriggerTime = DateTime.UtcNow; if (program.ConditionType == ConditionType.Once) { program.IsEnabled = false; } // program.ProgramThread = new Thread(() => { try { ExecuteWizardScript(program); } catch (ThreadAbortException) { program.IsRunning = false; } finally { program.IsRunning = false; } RaiseProgramModuleEvent(program, "Program.Status", "Idle"); }); // program.ProgramThread.Start(); } // Thread.Sleep(100); }
// TODO: v1.1 !!!IMPORTANT!!! move thread allocation and starting to ProgramEngineBase.cs class public void Run(ProgramBlock program, string options) { if (program.IsRunning) { return; } if (program.Engine.ProgramThread != null) { program.Engine.Stop(); program.IsRunning = false; } program.IsRunning = true; RaiseProgramModuleEvent(program, Properties.ProgramStatus, "Running"); program.TriggerTime = DateTime.UtcNow; program.Engine.ProgramThread = new Thread(() => { try { MethodRunResult result = null; try { result = program.Run(options); } catch (Exception ex) { result = new MethodRunResult(); result.Exception = ex; } if (result != null && result.Exception != null && !result.Exception.GetType().Equals(typeof(System.Reflection.TargetException))) { // runtime error occurred, script is being disabled // so user can notice and fix it List <ProgramError> error = new List <ProgramError>() { program.GetFormattedError(result.Exception, false) }; program.ScriptErrors = JsonConvert.SerializeObject(error); program.IsEnabled = false; RaiseProgramModuleEvent(program, Properties.RuntimeError, "CR: " + result.Exception.Message.Replace('\n', ' ').Replace('\r', ' ')); } RaiseProgramModuleEvent(program, Properties.ProgramStatus, "Idle"); } catch (ThreadAbortException e) { // nothing to be done here RaiseProgramModuleEvent(program, Properties.ProgramStatus, "Interrupted"); } finally { program.IsRunning = false; program.Engine.ProgramThread = null; } }); // if (program.ConditionType == ConditionType.Once) { program.IsEnabled = false; } // try { program.Engine.ProgramThread.Start(); } catch { program.Engine.Stop(); program.IsRunning = false; RaiseProgramModuleEvent(program, Properties.ProgramStatus, "Idle"); } // //Thread.Sleep(100); }
public void Run(ProgramBlock program, string options) { if (program.IsRunning) return; // if (program.ProgramThread != null) { program.Stop(); program.IsRunning = false; } // program.IsRunning = true; RaiseProgramModuleEvent(program, "Program.Status", "Running"); // if (program.Type.ToLower() != "wizard") { if (program.Type.ToLower() == "csharp" && program.AppAssembly == null) { program.IsRunning = false; } else { program.TriggerTime = DateTime.UtcNow; program.ProgramThread = new Thread(() => { MethodRunResult result = null; try { result = program.Run(options); } catch (Exception ex) { result = new MethodRunResult(); result.Exception = ex; } // if (result != null && result.Exception != null) { // runtime error occurred, script is being disabled // so user can notice and fix it List<ProgramError> error = new List<ProgramError>() { new ProgramError() { CodeBlock = "CR", Column = 0, Line = 0, ErrorNumber = "-1", ErrorMessage = result.Exception.Message } }; program.ScriptErrors = JsonConvert.SerializeObject(error); program.IsEnabled = false; RaiseProgramModuleEvent( program, "Runtime.Error", "CR: " + result.Exception.Message.Replace( '\n', ' ' ) ); } program.IsRunning = false; program.ProgramThread = null; RaiseProgramModuleEvent(program, "Program.Status", "Idle"); }); // try { program.ProgramThread.Start(); } catch { program.Stop(); program.IsRunning = false; RaiseProgramModuleEvent(program, "Program.Status", "Idle"); } } } else { program.TriggerTime = DateTime.UtcNow; if (program.ConditionType == ConditionType.Once) { program.IsEnabled = false; } // program.ProgramThread = new Thread(() => { try { ExecuteWizardScript(program); } catch (ThreadAbortException) { program.IsRunning = false; } finally { program.IsRunning = false; } RaiseProgramModuleEvent(program, "Program.Status", "Idle"); }); // program.ProgramThread.Start(); } // Thread.Sleep(100); }