asp.net如何动态的获取cpu利用率 显示到一个控件上 然后理由ajax实现及时刷新数据

解决方案 »

  1.   

    调用WINDOWS API
    外层放个UPDATEPANLE
    在用TIMER去控制
    显示用图标吧
    VS08里的MSCHART
      

  2.   

    不用API也行
    用 PerformanceCounter(Windows NT 性能计算机器组件)
      

  3.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CheckCupAndMemory.aspx.cs"
        Inherits="ChartWeb.CheckCupAndMemory" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Chart ID="ChartMemory" runat="server" BackColor="LightSteelBlue" BackGradientStyle="TopBottom"
                        BackSecondaryColor="White" EnableTheming="False" EnableViewState="True" Height="363px"
                        Width="415px">
                        <Legends>
                            <asp:Legend Alignment="Center" Docking="Bottom" Name="Legend1" Title="图例">
                            </asp:Legend>
                        </Legends>
                        <Titles>
                            <asp:Title Font="微软雅黑, 16pt" Name="Title1" Text="系统内存监控图表">
                            </asp:Title>
                        </Titles>
                        <Series>
                            <asp:Series BorderColor="White" BorderWidth="3" ChartArea="ChartArea1" ChartType="Spline"
                                Legend="Legend1" Name="已使用物理内存" XValueType="Double" YValueType="Double">
                            </asp:Series>
                            <asp:Series BorderWidth="3" ChartArea="ChartArea1" ChartType="Spline" Legend="Legend1"
                                Name="全部占用内存">
                            </asp:Series>
                            <asp:Series ChartArea="ChartArea2" ChartType="StackedArea" Legend="Legend1" Name="CPU">
                            </asp:Series>
                        </Series>
                        <ChartAreas>
                            <asp:ChartArea BackColor="224, 224, 224" BackGradientStyle="LeftRight" Name="ChartArea1">
                            </asp:ChartArea>
                            <asp:ChartArea Name="ChartArea2">
                            </asp:ChartArea>
                        </ChartAreas>
                    </asp:Chart>
                    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1000">
                    </asp:Timer>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        </form>
    </body>
    </html>
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Diagnostics;
    using System.Web.UI.DataVisualization.Charting;namespace ChartWeb
    {
        public partial class CheckCupAndMemory : System.Web.UI.Page
        {
            static PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            protected void Page_Load(object sender, EventArgs e)
            {        }        protected void Timer1_Tick(object sender, EventArgs e)
            {
                MEMORY_INFO MemInfo = new MEMORY_INFO();
                ComputerInfo.GlobalMemoryStatus(ref MemInfo);
                //UseMemory
                Series series = ChartMemory.Series[0];
                int xCount = series.Points.Count == 0 ? 0 : series.Points.Count - 1;
                double lastXValue = series.Points.Count == 0 ? 1 : series.Points[xCount].XValue + 1;
                double lastYValue = (double)(MemInfo.dwTotalPhys - MemInfo.dwAvailPhys) / 1024 / 1024;
                series.Points.AddXY(lastXValue, lastYValue);
                //Total Memory
                series = ChartMemory.Series[1];
                lastYValue = (double)(MemInfo.dwTotalVirtual + MemInfo.dwTotalPhys - MemInfo.dwAvailPhys - MemInfo.dwAvailVirtual) / 1024 / 1024;
                series.Points.AddXY(lastXValue, lastYValue);            //CPU
                series = ChartMemory.Series[2];
                lastYValue = (double)pc.NextValue();
                series.Points.AddXY(lastXValue, lastYValue);            // Remove points from the left chart side if number of points exceeds 100.
                while (this.ChartMemory.Series[0].Points.Count > 80)
                {
                    // Remove series points
                    foreach (Series s in this.ChartMemory.Series)
                    {
                        s.Points.RemoveAt(0);
                    }
                }
                // Adjust categorical scale
                double axisMinimum = this.ChartMemory.Series[0].Points[0].XValue;
                this.ChartMemory.ChartAreas[0].AxisX.Minimum = axisMinimum;
                this.ChartMemory.ChartAreas[0].AxisX.Maximum = axisMinimum + 99;        }
            public class ComputerInfo
            {
                /// <summary>
                /// 取得Windows的目录
                /// </summary>
                /// <param name="WinDir"></param>
                /// <param name="count"></param>
                [DllImport("kernel32")]
                public static extern void GetWindowsDirectory(StringBuilder WinDir, int count);
                /// <summary>
                /// 获取系统路径
                /// </summary>
                /// <param name="SysDir"></param>
                /// <param name="count"></param>
                [DllImport("kernel32")]
                public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
                /// <summary>
                /// 取得CPU信息
                /// </summary>
                /// <param name="cpuinfo"></param>
                [DllImport("kernel32")]
                public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
                /// <summary>
                /// 取得内存状态
                /// </summary>
                /// <param name="meminfo"></param>
                [DllImport("kernel32")]
                public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
                /// <summary>
                /// 取得系统时间
                /// </summary>
                /// <param name="stinfo"></param>
                [DllImport("kernel32")]
                public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);            public ComputerInfo()
                {            }
            }        //定义CPU的信息结构 
            [StructLayout(LayoutKind.Sequential)]
            public struct CPU_INFO
            {
                public uint dwOemId;
                public uint dwPageSize;
                public uint lpMinimumApplicationAddress;
                public uint lpMaximumApplicationAddress;
                public uint dwActiveProcessorMask;
                public uint dwNumberOfProcessors;
                public uint dwProcessorType;
                public uint dwAllocationGranularity;
                public uint dwProcessorLevel;
                public uint dwProcessorRevision;
            }
            //定义内存的信息结构 
            [StructLayout(LayoutKind.Sequential)]
            public struct MEMORY_INFO
            {
                public uint dwLength;
                public uint dwMemoryLoad;
                public uint dwTotalPhys;
                public uint dwAvailPhys;
                public uint dwTotalPageFile;
                public uint dwAvailPageFile;
                public uint dwTotalVirtual;
                public uint dwAvailVirtual;
            }
            //定义系统时间的信息结构 
            [StructLayout(LayoutKind.Sequential)]
            public struct SYSTEMTIME_INFO
            {
                public ushort wYear;
                public ushort wMonth;
                public ushort wDayOfWeek;
                public ushort wDay;
                public ushort wHour;
                public ushort wMinute;
                public ushort wSecond;
                public ushort wMilliseconds;
            }
        }
    }
      

  5.   

    例子发你邮件了 检测内存和CPU利用率的
      

  6.   

    你那边运行出错了吗 我这边有个错误using System.Web.UI.DataVisualization.Charting; 这个找不到 我的也是vs2008 
      

  7.   

    必须的 那个一个组件 你得安装下
    MSCHART这组件
      

  8.   

    我把组件给你发过去了 你按下就好了 如果按不明白我在把DLL给你。
      

  9.   

    给我也发一份吧
      [email protected]