我是C#的新手,正在尝试杀死进程列表。我能够使用下面的代码来杀死一个进程,但是想要更改它以便它杀死一个进程列表。随着时间的推移,列表将会如此理想地增长,我希望找到一种方法来更新列表,这将是快速而简单的。
try
{
foreach (Process proc in Process.GetProcessesByName("notepad"))
{
proc.Kill();
}
}
catch (Exception)
{
Console.WriteLine("Procces not found.");
}
如果我忽略了一个已经被问过的问题,我很抱歉。 提前感谢您提供的任何帮助。
答案 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
}
但以这种方式做这件事并不值得。我认为每次想要杀死进程时都更容易调用代码。
只有将通用参数更改为string
或int
并传递进程名称或pid时,才能使用集合的方式。在这种情况下,您可以确定Process
事件处理程序中的CollectionChanged
对象并在那里将其终止。 (就像你的代码一样。)