/// <summary> /// データ変換処理の定義通り、データソースを変換する /// </summary> /// <param name="tableName"></param> /// <param name="dttSource"></param> /// <param name="isExpectData"></param> private void ChangeDataByCheckPattern(string tableName, DataTable dttSource, bool isExpectData) { string srcTableName = tableName.ToUpper(); foreach (CheckInfoSet.CheckParttenRow partten in Config.CheckPartten) { DataProcessType changeType = (DataProcessType)Enum.Parse(typeof(DataProcessType), partten.ProcessType, true); ProcessTarget target = (ProcessTarget)Enum.Parse(typeof(ProcessTarget), partten.ProcessTarget, true); if (target != ProcessTarget.Both && ((target == ProcessTarget.ExpectData && isExpectData == false) || (target == ProcessTarget.ResultData && isExpectData))) { continue; } if (!string.IsNullOrEmpty(partten.TableName) && partten.TableName.ToUpper().Equals(srcTableName)) { //対象テーブルの場合、データ変換処理 ChangeDatas(dttSource, partten.ColumnName, changeType); } else if (!string.IsNullOrWhiteSpace(partten.ColumnName) && dttSource.Columns.Contains(partten.ColumnName)) { //対象列が存在する場合、データ変換処理 ChangeDatas(dttSource, partten.ColumnName, changeType); } } }
void Worker(object cState) { (new helpers.Logger()).WriteWarning("сервер инициации запущен"); string sProcesses = "целевые процессы:"; _aProcesses = new ProcessTarget[Preferences.aProcesses.Length]; for (int nIndx = 0; Preferences.aProcesses.Length > nIndx; nIndx++) { _aProcesses[nIndx] = new ProcessTarget(Preferences.aProcesses[nIndx]); sProcesses += "<br>\t\t" + _aProcesses[nIndx].ToString(); } (new helpers.Logger()).WriteNotice(sProcesses); try { System.Diagnostics.Process cProcess = null; while (!bAbort) { foreach (ProcessTarget cProcessTarget in _aProcesses) { try { if (0 < cProcessTarget.nID) { try { cProcess = System.Diagnostics.Process.GetProcessById(cProcessTarget.nID); if (cProcess.PriorityClass != cProcessTarget.enPriority) { cProcess.PriorityClass = cProcessTarget.enPriority; (new helpers.Logger()).WriteNotice("приоритет целевого процесса изменен:" + cProcessTarget.ToString()); } if (cProcessTarget.bFail) { cProcessTarget.bFail = false; (new helpers.Logger()).WriteNotice("целевой процесс запущен " + cProcessTarget.ToString()); } } catch { cProcessTarget.nMessageLastAge = DateTime.Now.Subtract(cProcessTarget.dtMessageLast).TotalMinutes; if (5 < cProcessTarget.nMessageLastAge) { if (!cProcessTarget.bFail) { (new helpers.Logger()).WriteError(new Exception("не найден целевой процесс " + cProcessTarget.ToString())); cProcessTarget.bFail = true; } else { (new helpers.Logger()).WriteError(new Exception("ошибка запуска целевого процесса " + cProcessTarget.ToString())); cProcessTarget.dtMessageLast = DateTime.Now; } } cProcessTarget.Start(); } } else { cProcessTarget.Start(); } } catch (Exception ex) { (new helpers.Logger()).WriteError(ex); } } if (!Preferences.sRestartFile.IsNullOrEmpty()) { string sRestartFNWE = sio.Path.GetFileNameWithoutExtension(Preferences.sRestartFile); string sFirstRestartFN = sio.Directory.GetFiles(sio.Path.GetDirectoryName(Preferences.sRestartFile)).FirstOrDefault(o => sio.Path.GetFileName(o).StartsWith(sRestartFNWE) && !o.EndsWith("!")); string sFirstRestartName = sio.Path.GetFileName(sFirstRestartFN); if (System.IO.File.Exists(sFirstRestartFN)) { (new Logger()).WriteNotice("try to restart something - see answer file in [" + System.IO.Path.GetDirectoryName(sFirstRestartFN) + "]"); string sAnswer = "processes detected:\n"; foreach (ProcessTarget cP in _aProcesses) { sAnswer += "[arg=" + cP.sArguments + "][name=" + cP.sName + "]\n"; } Exception cCurrentException = null; try { string[] aLines = System.IO.File.ReadLines(sFirstRestartFN).ToArray(); foreach (string sRestart in aLines) { if (sRestart.IsNullOrEmpty() || sRestart.StartsWith("#")) { continue; } sAnswer += "read lines: [" + sRestart + "]\n"; if (sRestart.ToLower() == "iis") { RestartIIS(); sAnswer += "restarted IIS\n"; continue; } ProcessTarget cPT = _aProcesses.FirstOrDefault(o => o.sArguments == sRestart); if (null != cPT) { (new helpers.Logger()).WriteDebug("try_to_stop_process = [" + cPT.sArguments + "]"); cPT.Stop(); sAnswer += "restarted " + sRestart + "\n"; } } //System.Diagnostics.Process.Start(@"c:\Program Files\replica\ingenie\server\restart\ingenie.restart.exe"); } catch (Exception ex) { cCurrentException = ex; (new helpers.Logger()).WriteError(ex); } string sFileAnswer = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Preferences.sRestartFile), "answer_" + sFirstRestartName); if (cCurrentException == null) { sAnswer += "done successfully\n"; } else { sAnswer += "ERRORS! \n" + cCurrentException.Message + "\n" + (null == cCurrentException.InnerException ? "" : cCurrentException.InnerException.Message); } System.IO.File.WriteAllText(sFileAnswer, sAnswer); System.IO.File.Move(sFirstRestartFN, sFirstRestartFN + "!"); } } System.Threading.Thread.Sleep(1000); } } catch (Exception ex) { (new helpers.Logger()).WriteError(ex); } finally { (new helpers.Logger()).WriteNotice("сервер инициации остановлен"); } }
void Worker(object cState) { (new helpers.Logger()).WriteNotice("сервер инициации запущен"); string sProcesses = "целевые процессы:"; _aProcesses = new ProcessTarget[Preferences.aProcesses.Length]; for (int nIndx = 0; Preferences.aProcesses.Length > nIndx; nIndx++) { _aProcesses[nIndx] = new ProcessTarget(Preferences.aProcesses[nIndx]); sProcesses += "<br>" + _aProcesses[nIndx].ToString(); } (new helpers.Logger()).WriteNotice(sProcesses); try { System.Diagnostics.Process cProcess = null; while (true) { foreach (ProcessTarget cProcessTarget in _aProcesses) { try { if (0 < cProcessTarget.nID) { try { cProcess = System.Diagnostics.Process.GetProcessById(cProcessTarget.nID); if (cProcessTarget.bFail) { (new helpers.Logger()).WriteNotice("целевой процесс запущен " + cProcessTarget.ToString()); cProcessTarget.bFail = false; } } catch { cProcessTarget.nMessageLastAge = DateTime.Now.Subtract(cProcessTarget.dtMessageLast).TotalMinutes; if (5 < cProcessTarget.nMessageLastAge) { if (!cProcessTarget.bFail) { (new helpers.Logger()).WriteError(new Exception("не найден целевой процесс " + cProcessTarget.ToString())); cProcessTarget.bFail = true; } else { (new helpers.Logger()).WriteError(new Exception("ошибка запуска целевого процесса " + cProcessTarget.ToString())); cProcessTarget.dtMessageLast = DateTime.Now; } } cProcessTarget.Start(); } } else cProcessTarget.Start(); } catch (Exception ex) { (new helpers.Logger()).WriteError(ex); } } if (null != Preferences.sRestartFile && System.IO.File.Exists(Preferences.sRestartFile)) //EMERGENCY:l это зачем такое? { try { System.IO.File.Delete(Preferences.sRestartFile); System.Diagnostics.Process.Start(@"c:\Program Files\replica\ingenie\server\restart\ingenie.restart.exe"); } catch (Exception ex) { (new helpers.Logger()).WriteError(ex); } } System.Threading.Thread.Sleep(3000); } } catch (Exception ex) { (new helpers.Logger()).WriteError(ex); } (new helpers.Logger()).WriteNotice("сервер инициации остановлен"); }
public void SetTarget(int processId, bool matchHostXArg) { Target = new ProcessTarget(processId, matchHostXArg); }
public void SetTarget(string processName, bool matchHostXArg) { Target = new ProcessTarget(processName, matchHostXArg); }