程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現的一個任務管理器

C#實現的一個任務管理器

編輯:關於C語言

這幾天看到Process組件,挺感興趣的,所以做了這麼一個東東,到不是為了別的什麼,算是熟悉一下Process提供的各種屬性和方法吧。程序很簡單,得益於Process封裝了很多有用的方法,直接調用就可以了,前提當然是你得熟悉哪個屬性代表什麼意思哪個方法是干嗎的啦'。窗體上主要用istVIEw控件來枚舉進程及其相關信息,有兩個問題還未解決,有高手路過望不惜賜教。
第一個問題是模擬實現longhorn任務管理器的打開進程所在目錄時只能打開到進程所在目錄的文件夾,還差一步選定進程文件,怎麼實現?
另一個問題是程序中利用一個定時器來自動更新進程列表信息,獲取系統所有進程信息的這段代碼如下:

        //獲得當前所有進程信息並填充ListVIEw
        private void GetCurrentInfo()
        {
            processList.Items.Clear();
            myProcess =
 Process.GetProcesses();
            foreach (Process pr in
 myProcess)
            {
                pr.Refresh();
                string[] str =
 {
                                   pr.ProcessName,
                                   pr.Id.ToString(),
                                   pr.TotalProcessorTime.ToString().Substring(0,8
),
                                   ((double)pr.WorkingSet/1024).ToString("0.##") + " K"
,
                                   ((double)pr.VirtualMemorySize/1024).ToString("0.##") + " K"
,
                                   pr.BasePriority.ToString(),
                                   pr.Responding==true?"正在運行":"失去響應"

                               };
                processList.Items.Add(
new ListVIEwItem(str));
            }
        }

正如上所寫,每次更新前先清空listView中的所有項,然後重新獲得當前所有進程信息並枚舉填充,這樣帶來的問題是會丟失更新前listview的selectIndex,由此引發其它一系列依賴於selectIndex的操作的問題。有什麼好的辦法能讓ListVIEw不用全部清除而直接更新?

截圖: 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved