1

所以我的电脑有很多错误。99% 的时间,它们是由 explorer.exe 愚蠢造成的。我可以手动停止它们,但我想我可以设置一个每隔 10 分钟左右自动停止和启动的时间表,所以我再也不会遇到任何问题了。我的代码不起作用,但我还是会说:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer.exe")
            {
                myProc.Kill();
            }
        }

当我运行它时,绝对没有任何反应。Visual Studio 不会出错,程序不会崩溃,等等。它什么也不做。

4

4 回答 4

4

请避免使用for-if模式

var explorers = Process.GetProcessesByName("explorer");
foreach (var thisExplorer in explorers)
{
    thisExplorer.Kill();
}

编辑:正如评论中所说的charmander。

于 2012-07-09T23:09:17.303 回答
0

你也可以用 Linq 的方式来做

List<Process> processes = Process.GetProcesses().Where(p => p.ProcessName == "explorer").ToList();

foreach (var process in processes)
{
  process.Kill();
}
于 2012-07-09T23:14:40.043 回答
0

进程名称只是“explorer”

编辑:这在我的盒子上起到了作用:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer")
            {
                myProc.Kill();
            }
        }
于 2012-07-09T22:48:56.883 回答
0

在假设您知道它包含的内容之前,查看特定方法/属性的输出通常是一个好主意。

在这种情况下,myProc.ProcessName不包含进程的扩展。因此,与“探索者”相比。

此外,在对集合进行 foreaching 的同时修改集合通常会导致运行时错误。

于 2012-07-09T22:49:44.883 回答