Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 3
0
        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");
        }