所以我的电脑有很多错误。 99%的时间,他们是由explorer.exe愚蠢造成的。我可以手动阻止它们,但我想我可能能够设置一个自动停止并每10分钟左右启动一次的计划,所以我再也不会遇到任何问题了。我的代码不起作用,但无论如何我都会说:
foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
{
if (myProc.ProcessName == "explorer.exe")
{
myProc.Kill();
}
}
当我运行它时,绝对没有任何反应。 Visual Studio不会出错,程序不会崩溃等等。它什么都不做。
答案 0 :(得分:4)
请避免使用the for-if
anti-pattern:
var explorers = Process.GetProcessesByName("explorer");
foreach (var thisExplorer in explorers)
{
thisExplorer.Kill();
}
编辑:正如评论员在评论中所说。
答案 1 :(得分:0)
流程名称只是“资源管理器”
编辑: 这在我的盒子上做了伎俩:
foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
{
if (myProc.ProcessName == "explorer")
{
myProc.Kill();
}
}
答案 2 :(得分:0)
在假设你知道它包含什么之前,通常最好先查看一个partucular方法/属性的输出。
在这种情况下,myProc.ProcessName
不包含进程的扩展名。所以比较“探险家”。
此外,在对其进行预处理时修改集合通常会导致运行时错误。
答案 3 :(得分:0)
您也可以使用Linq方式
List<Process> processes = Process.GetProcesses().Where(p => p.ProcessName == "explorer").ToList();
foreach (var process in processes)
{
process.Kill();
}