我正在开发一个c#/ soap / php项目,其中php web界面将执行soap请求以确定控制台应用程序是否正在运行。
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;
}
感谢您提供的任何帮助。
答案 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();
}