天天看點

C# 任務管理器

1.設計界面

C# 任務管理器

2.設定變量和list表

public int RunId;
        public DataGridCellInfo cellinfo;
        List<Data> list = new List<Data>();
           

3.與datagrid綁定

public class Data
        {
            public int Id { get; set; }
            public string ProcessName { get; set; }
            public string StartTime { get; set; }
            public string TotalMemory { get; set; }
            public string ThreadNum { get; set; }

        }
           

4.建立Ref方法用來擷取程序屬性和更新程序表

public void Ref()
        {
            dg.ItemsSource = null;
            Process[] process = Process.GetProcesses();
            foreach (Process p in process)
            {
                Data data = new Data();
                try
                {
                    data.StartTime = p.StartTime.ToString();
                }
                catch (Exception)
                {
                    data.StartTime = "無法擷取";
                }
                list.Add(new Data()
                {
                    Id = p.Id,
                    ProcessName = p.ProcessName,
                    StartTime = data.StartTime,
                    TotalMemory = (p.WorkingSet64 / 1024 / 1024).ToString(),
                    ThreadNum = (p.Threads.Count).ToString()
                });
                dg.ItemsSource = list;
            }
        }
           

5.調用Ref方法時程式啟動時顯示程序資訊

public MainWindow()
        {
            InitializeComponent();
            Ref();
        }
           

6.設定click事件,滑鼠標明datagrid行時傳回行資訊。Kill方法關閉程式

private void Button_Click(object sender, RoutedEventArgs e)
        {
            object temp = this.dg.SelectedItem;
            Data data = temp as Data;
            RunId = data.Id;
            try
            {
                Process myprocess = Process.GetProcessById(RunId);
                myprocess.Kill();
       
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            Ref();
        }
           

結果:

C# 任務管理器

問題讨論:

1.出現啟動時間無法擷取情況,最後檢查發現是前端綁定名寫錯。

2.起初擷取標明行用的是SelectedCellsChanged

C# 任務管理器

但是在結束程序後用Ref方法重新整理清單時因為標明行已不存在而二次使用SelectedCellsChanged出錯。

3.為擷取更高權限在csdn部落格學習了如何開啟vs管理者模式。

VS擷取權限的方法