永远不会找到正在运行的进程

时间:2012-08-03 18:16:18

标签: c# soap process

我正在开发一个c#/ soap / php项目,其中php web界面将执行soap请求以确定控制台应用程序是否正在运行。

soap请求调用一个获取进程的函数,然后循环以确定进程名称是否包含EmailServer。但是,即使我可以在任务管理器中看到进程EmailServer.exe,也永远不会找到它。我还设置了一个断点,这样我就可以查看数组中的进程并且EmailServer不存在。

我正在使用.net framework 3.5运行Windows 7 x64并且我以管理员帐户登录,因此它不能成为权限问题。

下面的屏幕截图显示了我在任务管理器enter image description here

中运行的进程

以下是获取流程列表的代码

public bool checkIfProcessIsRunning()
        {
            Process[] processes = Process.GetProcesses();
            foreach (Process process in processes)
            {
                if (process.ProcessName.ToLower().Contains("EmailServer"))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            return false;
        }

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:10)

  

process.ProcessName.ToLower()。包含( “emailserver的”)

您正在检查全部小写字符串是否包含带有大写字符的字符串。

答案 1 :(得分:2)

请改用:process.ProcessName.IndexOf("EmailServer", StringComparison.OrdinalIgnoreCase) > -1

您也可以使用

if(Process.GetProcessesByName("EmailServer").Count() > 0)

或只是

public bool checkIfProcessIsRunning(){
    return Process.GetProcessesByName("EmailServer").Any();
}