如何杀死c#中的进程列表

时间:2015-04-10 00:36:27

标签: c# arrays list process kill

我是C#的新手,正在尝试杀死进程列表。我能够使用下面的代码来杀死一个进程,但是想要更改它以便它杀死一个进程列表。随着时间的推移,列表将会如此理想地增长,我希望找到一种方法来更新列表,这将是快速而简单的。

try
{
    foreach (Process proc in Process.GetProcessesByName("notepad"))
    {
        proc.Kill();
    }
}
catch (Exception)
{
    Console.WriteLine("Procces not found.");
}

如果我忽略了一个已经被问过的问题,我很抱歉。 提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

ObservableCollection<T>类在集合发生更改时提供事件。因此,您可以创建Process的集合并在事件处理程序中处理新添加的项目:

ObservableCollection<Process> processes = new ObservableCollection<Process>();
processes.CollectionChanged += processes_CollectionChanged;

static void processes_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    if (e.NewItems != null)
        foreach (var process in e.NewItems.OfType<Process>())
            process.Kill();
    processes.Clear();//remove all Processes from the list
}

但以这种方式做这件事并不值得。我认为每次想要杀死进程时都更容易调用代码。

只有将通用参数更改为stringint并传递进程名称或pid时,才能使用集合的方式。在这种情况下,您可以确定Process事件处理程序中的CollectionChanged对象并在那里将其终止。 (就像你的代码一样。)