У меня есть приложение .net, которое может выполнить скрипт php ..
private const string PROGRAM_CALL = @"php.exe";
private const string PROGRAM_PARAMETERS = @"scriptA.php scriptA.cnf";
Следующий код выполняется в конструкторе класса:
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(PROGRAM_CALL)
{
UseShellExecute = false,
WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
RedirectStandardOutput = true,
Arguments = PROGRAM_PARAMETERS
};
_process.EnableRaisingEvents = true;
_process.Exited += new EventHandler(Process_Exited);
_process.StartInfo = myProcessStartInfo;
Затем по мере необходимости процесс запускается. Может быть запущен разными звонками ..
В настоящее время этот оператор запуска находится в методе, который вызывается из множества мест.
_process.Start();
Что я хотел бы выяснить, если сценарий php уже запущен?
Что я пробовал до сих пор:
bool isRunning = Process.GetProcessesByName(_process.ProcessName).Length > 0;
Однако при отладке я вижу, что _process.ProcessName выдает исключение (InvalidOperationException)
С уважением,
Fiona
Установите переменную (например, логическое значение) перед запуском процесса и сбросьте ее при выходе из процесса.
Других решений пока нет …