public void StartService() { // if(null!=ServiceThread) // throw new Exception("ServiceThread already exists!"); // ServiceThread = new Thread(new ThreadStart(StartServiceThread)); keepRunning = true; // ServiceThread.Start(); p.Start(); healthMonThread = new Thread(new System.Threading.ThreadStart(monitorHealth)); healthMonThread.Start(); }
private void run() { while (keepRunning) { if (RunningProcesses < MaxRunningProcesses && processQueue.Count > 0) { ProcessInfo processInfo = (ProcessInfo)processQueue.Dequeue(); AgentProcess newProcess = new AgentProcess(); newProcess.Application = processInfo.Application; newProcess.Arguments = processInfo.Arguments; newProcess.MaxMemoryUsage = MaxPerProcessMemoryUsage; newProcess.MaxRuntime = MaxPerProcessRuntime; newProcess.Priority = ProcessPriority; newProcess.VerboseLogging = VerboseLogging; newProcess.Started += new EventHandler(Process_Started); newProcess.Stopped += new EventHandler(Process_Stopped); newProcess.Stopping += new EventHandler(Process_Stopping); newProcess.Start(); } for (int i = runningProcesses.Count - 1; i > -1; i--) { try { AgentProcess p = (AgentProcess)runningProcesses[i]; if (!p.IsHealthy) { OnProcessNotHealthy(p); } } catch {} } System.Threading.Thread.Sleep(1000); } }