簡體   English   中英

如何在C#中殺死進程列表

[英]How to kill a list of processes in c#

我是C#的新手,正在嘗試殺死進程列表。 我能夠使用下面的代碼殺死一個進程,但想對其進行更改,以便殺死一個進程列表。 隨着時間的流逝,列表會不斷增長,因此理想情況下,我想找到一種方法來快速,輕松地更新列表。

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

很抱歉,如果我忽略了一個已經被問到的問題。 預先感謝您提供的任何幫助。

如果更改了集合,則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時,使用集合的方式才值得。 在這種情況下,您可以在CollectionChanged事件處理程序中確定Process對象並在那里殺死它們。 (就像您的代碼一樣。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM