如何在列表框或组合框中列出正在运行的进程

时间:2017-05-01 00:49:53

标签: c# listbox system

我正在尝试使用正在运行的进程列表填充列表框,以便我的用户可以选择他们希望监视的进程。

我尝试了以下内容,以及它的大量变体,我无法让它发挥作用。

foreach(Process p in Process.GetProcesses())
{
   listBox1.Items.Add(p.ProcessName);
}

它没有做任何事情,但是,我看到其他人说这对他们有用。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你试过在计时器或线程上运行吗?

或者将以下代码插入按钮点击事件。

Process[] allProc = Process.GetProcesses(); 
  foreach (Process p in allProc)
                {
                       listBox1.Items.Add(p.ProcessName);
                }

答案 1 :(得分:0)

好的,我不确定这是否真的有资格作为答案,但这就是我所建议的:做一些故障排除以找出几个问题中的哪一个正在发生。

我做的第一件事就是这样:

string fancyDebugString = "";
foreach(Process p in Process.GetProcesses())
{
    fancyDebugString += p.ProcessName + ",";
    //listBox1.Items.Add(p.ProcessName);
}
MessageBox.Show(fancyDebugString);  // or whatever feedback mechanism you can hook into.

...这将涵盖许多不同的可能问题:Process.GetProcesses()没有枚举,进程列表以某种方式显示为空白,代码由于某种原因根本不被调用等等。

如果可行,并显示以逗号分隔的进程列表?取消注释listBox添加 - 看看列表框添加是否以某种方式搞砸了foreach,并验证listBox1之后是否有项目。