/// <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); } } }
/// <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)); }