如何使用c#.net检查运行特定脚本的php进程是否正在运行

时间:2014-10-02 13:58:18

标签: c# php

我有一个可以执行php脚本的.net应用程序..

    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)

亲切的问候, 菲奥娜

1 个答案:

答案 0 :(得分:1)

在开始进程之前设置一个变量(例如布尔值),并在进程退出时取消设置它。