我正在制作一个简单的任务管理器。到目前为止,我已经能够将所有进程存储到Process
数组中,然后将其添加到listBox中。现在,当我按下 kill 按钮时,进程被终止,但它仍然显示在listBox中。此外,当我的代码运行时打开一个进程,它没有显示,我必须重新运行我的代码。这就是我所拥有的......
private void getProcs()
{
procArray = Process.GetProcesses();
processListBox.Items.Clear();
for(int i = 0; i<procArray.Length; i++)
{
processListBox.Items.Add(procArray[i].ProcessName);
}
}
private void Form1_Load(object sender, EventArgs e)
{
getProcs();
}
private void killButton_Click(object sender, EventArgs e)
{
procArray[processListBox.SelectedIndex].Kill();
getProcs();
}
我甚至尝试在getProcs()
函数中再次调用killButton_Click
函数来获取新列表。似乎&#34;刷新&#34; listBox(因为我再也看不到我在列表框中选择的索引,但是当我搜索进程时我刚刚杀死了它仍然在listBox中(我知道该进程因应用程序关闭而被终止)。 / p>
我也尝试使用计时器组件,但这是超级愚蠢的,因为有背景进程一直打开和关闭,所以几乎不可能选择任何东西
修改
好的,所以我找到了一种方法来使listBox&#39;刷新&#39;每当我杀死一个进程时,我只是在我终止进程后添加了.WaitForExit()
。转发.kill()函数是异步的,这就是为什么你必须等待它退出。
现在......我不知道怎么去刷新&#39;每当进程打开时。目前我有一种廉价的方式。我做了一个&#34;刷新&#34;按钮手动更新列表框......