/// <summary> 终止 Ansys 的计算进程树 </summary> /// <remarks> 注意此进程从哪个线程中启动,也只能从哪个线程中终止 </remarks> private void TerminateAbqCmd() { if (AbqProcess != null && !AbqProcess.HasExited) { try { ProcessesKiller.KillProcessAndChildren(AbqProcess.Id); //Process[] ps = Process.GetProcessesByName("cmd"); // abq6121 或 ABQcaeK 或 cmd //if (ps.Any()) //{ // Process p = ps[0]; // ProcessesKiller.KillProcessAndChildren(p.Id); //} State = SolverState.UserTerminated; } catch (Exception) { State = SolverState.UserTerninationFailed; } finally { AbqProcess = null; } } }
public bool StoreSettings() { ProcessesKiller.FindAndKillProcess(Constants.TrayApplicationProcessName); try { ProgramOptionsManager.ValidateOptions(_profileOptions); } catch (InvalidDataException exc) { Messages.ShowErrorBox(exc.Message); return(false); } catch (ArgumentNullException exc) { Messages.ShowErrorBox(exc.Message); return(false); } bool taskNeedScheduling = false; foreach (var pair in _profileOptions.BackupTasks) { if (pair.Value.EnableScheduling) { taskNeedScheduling = true; } } try { ProgramOptionsManager.StoreSettings(_profileOptions); ManageSchedulerStartup(taskNeedScheduling && (!_profileOptions.DontCareAboutSchedulerStartup)); } catch (Exception ee) { Messages.ShowErrorBox(ee.Message); return(false); } if (!_profileOptions.DontCareAboutSchedulerStartup) { if (taskNeedScheduling && !_profileOptions.DontNeedScheduler) { Process.Start(Files.Scheduler, SchedulerParameters.START_WITHOUT_MESSAGE); } } return(true); }
private static void Main(string[] args) { ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly()); IAppender fileAppender = CreateFileAppender(); IAppender consoleAppender = CreateConsoleAppender(); BasicConfigurator.Configure(repository, fileAppender, consoleAppender); log.Info($"Watching the processes by name:{args[0]}"); ICommandLineParser parser = new CommandLineParser(args); IProcessWatcher watcher = new ProcessWatcher(); var processesKiller = new ProcessesKiller(parser, watcher); processesKiller.Run(); log.Info("DONE"); }