码迷,mamicode.com
首页 > Windows程序 > 详细

C# Winform时时检测电脑的CPU使用率和物理内存使用率

时间:2017-07-31 18:49:13      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:使用   mem   arch   get   text   foreach   tar   sed   image   

刚开始我认为可以使用trimer控件就可以实现了,但是使用后才知道,把trimer设置为100微秒时,整个窗体就会不停的在加载中,无法用了= =

这个使用就只能使用线程加载了和委托赋值了

//CPU使用率
GetInfo getinfo = new GetInfo(userPercent,RAM);
Thread th = new Thread(getinfo.threadProcSoft);
th.Start();

// 定义委托类型
delegate void SetTextCallback(String str,String ram);

/// <summary>
/// 委托执行的事件CPU使用率
/// </summary>
public void threadProcSoft()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
string usePre = null;
string ramPre = null;
while (true)
{
foreach (ManagementObject myobject in searcher.Get())
{
usePre = myobject["LoadPercentage"].ToString() + " %";
//lblCPU.Text = myobject["LoadPercentage"].ToString() + " %";
//mheight = Convert.ToInt32(myobject["LoadPercentage"].ToString());
//if (mheight == 100)
// panel3.Height = 100;
//CreateImage();
ramPre = Memory() + "%";
}
this.setText(usePre,ramPre);
Thread.Sleep(300);
}
}

 

/// <summary>
/// 给CPU的label赋值
/// </summary>
/// <param name="str"></param>
public void setText(String str,String ram)
{
if (lable1.InvokeRequired)
{
// 解决窗体关闭时出现“访问已释放句柄”异常
while (lable1.IsHandleCreated == false)
{
if (lable1.Disposing || lable1.IsDisposed) return;
}

SetTextCallback d = new SetTextCallback(setText);
lable1.Invoke(d, new object[] { str,ram });
}
else
{
lable1.Text = str;
}
if (lable2.InvokeRequired)
{
// 解决窗体关闭时出现“访问已释放句柄”异常
while (lable2.IsHandleCreated == false)
{
if (lable2.Disposing || lable1.IsDisposed) return;
}

SetTextCallback d = new SetTextCallback(setText);
lable2.Invoke(d, new object[] { str,ram });
}
else
{
lable2.Text = ram;
}
}

C# Winform时时检测电脑的CPU使用率和物理内存使用率

标签:使用   mem   arch   get   text   foreach   tar   sed   image   

原文地址:http://www.cnblogs.com/yaomingke/p/7264370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!