天天看点

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获取权限的方法