2

我正在处理 ac#/soap/php 项目,其中 php Web 界面将执行一个肥皂请求以确定控制台应用程序是否正在运行。

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

我正在运行带有 .net framework 3.5 的 Windows 7 x64,并且我以管理员帐户登录,因此这不会是权限问题。

下面是一个屏幕截图,显示了我在任务管理器中运行的进程在此处输入图像描述

下面是获取进程列表的代码

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

感谢您的任何帮助,您可以提供。

4

2 回答 2

10

process.ProcessName.ToLower().Contains("EmailServer")

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

于 2012-08-03T18:17:26.567 回答
2

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

你也可以使用

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

或者干脆

public bool checkIfProcessIsRunning(){
    return Process.GetProcessesByName("EmailServer").Any();
}
于 2012-08-03T18:24:34.047 回答