我正在尝试使用正在运行的进程列表填充列表框,以便我的用户可以选择他们希望监视的进程。
我尝试了以下内容,以及它的大量变体,我无法让它发挥作用。
foreach(Process p in Process.GetProcesses())
{
listBox1.Items.Add(p.ProcessName);
}
它没有做任何事情,但是,我看到其他人说这对他们有用。 有什么想法吗?
答案 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之后是否有项目。