我试图终止每个进程与我的进程同名,而不会杀死我的进程。
这可能有点令人困惑,也许这段代码可以帮助你理解我的意思:
private static void KillExistingProcesses()
{
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (...) // if pro != Process.GetCurrentProcess()
pro.Kill();
}
}
我试过这样做:
if (!pro.Equals(Process.GetCurrentProcess())
&& pro != Process.GetCurrentProcess())
但我仍然最终终止了我自己的进程。
你能帮助我吗?我只需要为当前进程终止与进程excpet相同名称的每个进程。
谢谢你:)。
答案 0 :(得分:4)
您可以估算自己的Process-ID,然后在循环中将其与元素进行比较:
private static void KillExistingProcesses()
{
Process myProc = Process.GetCurrentProcess();
;
Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (var pro in p)
{
if (pro.Id != myProc.Id)
{
pro.Kill();
}
}
}
答案 1 :(得分:4)
您可以使用Linq过滤掉具有相同Id
Process current = Process.GetCurrentProcess();
var processes = Process.GetProcessesByName(current.ProcessName)
.Where(p => p.Id != current.Id);
foreach(var process in processes)
{
process.Kill();
}
答案 2 :(得分:2)
您正在比较没有定义有意义的等式关系的Process
个对象。
比较进程ID。