Пример #1
0
        /// <summary>
        /// Kills the abandoned collect task result process.
        /// </summary>
        /// <param name="processId">Process identifier.</param>
        /// <param name="jobName">Job name.</param>
        /// <param name="jobId">Job identifier.</param>
        public static void KillAbandonedCollectTaskResultProcess(int processId, string jobName, string jobId)
        {
            var businessId = JobBase.FormatBusinessId(jobName, jobId);

            Process osProcess = null;

            try
            {
                osProcess = Process.GetProcessById(processId);
            }
            catch (Exception ex)
            {
                LogWriter.Write(string.Format("根据进程Id查找进程异常,进程可能已经关闭了:{0},{1}", businessId, processId), ex, LogLevel.Info);
            }

            bool canDeleteProcessFile = true;

            if (osProcess != null)
            {
                if (SwiftProcess.CheckJobAndProcessMatch(osProcess, jobName, jobId, "CollectTaskResult"))
                {
                    try
                    {
                        osProcess.Kill();
                        osProcess.WaitForExit();
                        LogWriter.Write(string.Format("已关闭废弃的任务合并进程:{0},{1}", businessId, processId), LogLevel.Info);
                    }
                    catch (Exception ex)
                    {
                        canDeleteProcessFile = false;
                        LogWriter.Write(string.Format("关闭废弃的任务合并进程异常:{0},{1}", businessId, processId), ex, LogLevel.Error);
                    }
                }
            }

            if (canDeleteProcessFile)
            {
                var processPath = SwiftConfiguration.GetSwiftProcessPath("CollectTaskResult", JobBase.FormatBusinessId(jobName, jobId));
                try
                {
                    File.Delete(processPath);
                    LogWriter.Write(string.Format("进程文件已删除:{0}", processPath), LogLevel.Info);
                }
                catch (Exception ex)
                {
                    LogWriter.Write(string.Format("删除废弃的任务合并进程文件异常:{0},{1}", businessId, processId), ex, LogLevel.Error);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 检查作业和进程是否匹配
        /// </summary>
        /// <returns><c>true</c>, if job and process match was checked, <c>false</c> otherwise.</returns>
        /// <param name="processId">Process identifier.</param>
        /// <param name="jobName">Job name.</param>
        /// <param name="jobId">Job identifier.</param>
        /// <param name="method">Method.</param>
        public static bool CheckJobAndProcessMatch(int processId, string jobName, string jobId, string method)
        {
            var businessId = JobBase.FormatBusinessId(jobName, jobId);

            Process osProcess = null;

            try
            {
                osProcess = Process.GetProcessById(processId);
            }
            catch (Exception ex)
            {
                LogWriter.Write(string.Format("根据进程Id查找进程失败:{0},{1}", businessId, processId), ex, LogLevel.Info);
            }

            if (osProcess == null)
            {
                return(false);
            }

            return(CheckJobAndProcessMatch(osProcess, jobName, jobId, method));
        }