【问题标题】:How can I get an array of processes using GetProcessesByName in C#?如何在 C# 中使用 GetProcessesByName 获取进程数组?
【发布时间】:2017-03-21 15:17:28
【问题描述】:

我认为这是一个非常简单的方法,但我正在尝试执行 foreach 循环,它会搜索我在数组中定义的两个进程:

    public void getProcess()
    {
        Process[] localByName = Process.GetProcessesByName("lmgrd_x64_n6"), Process.GetProcessesByName("lmgrd");
        lb_instances.Items.Clear();

        foreach (Process proc in localByName)
        {
            try
            {
                lb_instances.Items.Add(proc.MainModule.FileName + " " + proc.Id);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), ex.InnerException.ToString());
            }
        }
    }

这不是正确的语法,有人可以建议最好的方法吗?

谢谢, 山姆

【问题讨论】:

  • 那么,您已经知道 2 的名称,并且您只想将它​​们放在一个数组中..?
  • 你的代码中没有循环
  • 或者Process.GetProcessesByName("lmgrd_x64_n6").Union( Process.GetProcessesByName("lmgrd")).ToArray();?
  • @DangerZone 是的。

标签: c#


【解决方案1】:

每个Process.GetProcessesByName 调用都会返回一个进程数组。因此,您不仅需要将它们放入结果数组中,还需要展平这些结果。使用Enumerable.SelectMany 方法很容易做到:

var names = new [] {"lmgrd_x64_n6", "lmgrd" };    
var localByName = names.SelectMany(name => Process.GetProcessesByName(name)).ToArray();

或者您可以将两个结果数组连接成一个数组。同样,Enumerable.Concat 将在这里为您提供帮助:

var localByName = Process.GetProcessesByName("lmgrd_x64_n6")
             .Concat(Process.GetProcessesByName("lmgrd"))
             .ToArray();

【讨论】:

  • @CodeCaster 我重新打开了问题,因为它不正确重复。这个问题不是关于使用数组初始值设定项——而是关于将两个数组合二为一
  • 我明白了,你是对的。感谢您添加解释。
  • @SergeyBerezovskiy 谢谢你,我试过了,但还是不行。我已经编辑了我的原始帖子。
  • @SergeyBerezovskiy for 循环没有运行。在localByName 我得到 {System.Diagnostics.Process[0]}
  • @SCramphorn 这意味着你没有运行这样的进程
【解决方案2】:

Process.GetProcessesByName 返回一个数组,使用 LINQ SelectMany 可以循环遍历它们。

string[] processNames = {"lmgrd_x64_n6", "lmgrd"};

foreach (Process process in processNames.SelectMany(Process.GetProcessesByName))
{
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2020-10-09
    • 2021-05-14
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多