1)可以檢視程序的各項基本資訊,如cpu,記憶體,父程序,執行路徑,建立者等
2)可以中止程序,建立新程序
3)可以配置目標程序,配置重新整理速度
(以下給出部分**,其餘像程序的建立、中止等,使用process類將很容易實現)
1)使用wmi獲取父程序id,程序建立者
(注意,使用wmi獲得的內容,不宜迴圈重新整理,這樣代價比較大)
新增命名空間:
using system.management;
/**
/// 使用wmi獲取指定程序的建立者等資訊
///
/// 程序id
private void filldetailusewmi(int pid)
string user = "";
//判斷獲取使用者名稱的操作是否成功
if (hor.obj["returnvalue"].tostring() == "0")
//判斷字典中是否已移除該項
if (!this.mdict.containskey(pid))
if (mo["parentprocessid"] != null && this.mdict.containskey(convert.toint32(mo["parentprocessid"])))
this.mdict[pid].creator = user;
//觸發重新整理程序詳細資訊事件
if (this.handledetaillist != null)
}//釋放資源
searcher.dispose();
searcher = null;
moc.dispose();
moc = null;
observer = null;
hor = null;
}/**
/// 該類用於監測wmi非同步呼叫方法是否已經返回
///
public class handleobjectready
public bool complete
}public managementbaseobject obj}}
2)使用效能計數器計算cpu利用率
2.1)計算過程
//通過計數器獲取idle空閒程序cpu佔用率r1;
//通過process類的totalprocessortime屬性獲取各程序的cpu時間,求和,得各程序(除空閒程序idle,該程序無法通過process類獲得cpu時間)cpu時間和t1;
//通過t1/(100-r1)得到總cpu時間t;
//對各程序,通過totalprocessortime獲得程序cpu時間tnew,計算:
(tnew-told)/t,即得該程序的cpu佔用率,其中told是程式中記錄的該程序上一次的totalprocessortime。
2.2)關於效能計數器
系統會為每個程序分配乙個計數器,通過
new performancecounter("process", "% processor time", "程序名稱")例項化該計數器,使用計數器物件的nextvalue方法可以得到程序占用cpu的百分比(第一次呼叫nextvalue獲取的值都為0,之後就沒問題了,這個要注意)。
2.3)idle程序的含義
idle意為懶散的、無所事事。事實上,idle不能算著乙個程序,它用於表示cpu空閒資源,它所佔的比率越高,表示你的機器越空閒。
2.4)多核cpu或使用超執行緒技術的cpu
對於多核或使用超執行緒技術的cpu,根據計數器求得的idle程序cpu占用比率將超過100%,此時應將idle的cpu利用率/總的cpu利用率,所得作為真正的idle的cpu利用率。
新增命名空間:
using system.diagnostics;
/**
/// 效能計數器,用於獲取cpu空閒百分比
///
private static performancecounter midle = new performancecounter("process", "% processor time", "idle");
/**
/// 效能計數器,用於獲取cpu總利用率
///
private static performancecounter mtotal = new performancecounter("process", "% processor time", "_total");
private void fillneedrefreshinfo(params process pcurrentall)
else
catch
}//呼叫重新整理事件
if (this.handleprocerefresh != null)}}
private double calcurrenttotalcputime()
else
//以下獲取上一次計算至當前總的非空閒cpu時間
foreach (process p in this.mcurrentall)
if (this.mdict ==null || !this.mdict.containskey(p.id))
else
}
C 寫「監視器」
using system using system.io class watcher create a new filesystemwatcher and set its properties.filesystemwatcher watcher new filesystemwatcher watch...
mysql 鎖監視器 MySQL鎖監視器
還在為看不懂何登成的加鎖處理分析文章感到羞愧嗎?還在因為何大師的筆誤,陷入深深的迷茫嗎?只要你擁有大於5.6.16版本的mysql,鎖監視器你值得擁有 快速入門 開啟set global innodb status output on set global innodb status output ...
mysql 鎖監視器 MySQL鎖監視器
標籤 還在為看不懂何登成的加鎖處理分析文章感到羞愧嗎?還在因為何大師的筆誤,陷入深深的迷茫嗎?只要你擁有大於5.6.16版本的mysql,鎖監視器你值得擁有 快速入門 開啟set global innodb status output on set global innodb status outp...