NancyFx框架检测任务管理器详解

本文为大家分享了NancyFx框架检测任务管理器的具体方法,供大家参考。

先建一个空的项目和之前的NancyFx系列一样的步骤

然后建三个文件夹Models,Module,Views

然后分别安装一下组件

jQuery

Microsoft.AspNet.SignalR

Microsoft.Owin

Nancy

Nancy.Owin

然后往Model类里面添加CPUHub类,Broadcaster类

CPUHub类

public class CPUHub:Hub
{
  private readonly Broadcaster broadcaster;
  public CPUHub():this(Broadcaster.broadcaster)
  {

  }
  public CPUHub(Broadcaster broadcaster)
  {
    this.broadcaster = broadcaster;
  }
}

Broadcaster类

public class Broadcaster
{
  private readonly static Lazy<Broadcaster> lazy = new Lazy<Broadcaster>(()=>new Broadcaster(GlobalHost.ConnectionManager.GetHubContext<CPUHub>().Clients));

  private readonly TimeSpan timeSpan = TimeSpan.FromMilliseconds(1000);
  private readonly Timer timer;
  public static Broadcaster broadcaster
  {
    get { return lazy.Value; }
  }
  private IHubConnectionContext hubConnectionContext
  {
    get;
    set;
  }
  private Broadcaster(IHubConnectionContext hubConnectionContexts)
  {
    hubConnectionContext = hubConnectionContexts;
    timer = new Timer(BroadcastCpuUsage,null,timeSpan,timeSpan);
  }
  private void BroadcastCpuUsage(object o)
  {
    string cpu = GetCurrentCpu();

  }
  private string GetCurrentCpu()
  {
    string currentCpu = "";
    HttpClient httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri("http://localhost:3039");
    var response = httpClient.GetAsync("api/cpu").Result;
    if (response.IsSuccessStatusCode)
    {
      currentCpu = response.Content.ReadAsStringAsync().Result;
    }
    return currentCpu;
  }
}

然后在往Module里面添加CPUModule类

public class CPUModule:NancyModule
{
  PerformanceCounter performanceCounter;
  public CPUModule():base("api/cpu")
  {
    InitializePerformanceCounter();
    Get("/",Lexan=> 
    {
      int cpu = (int)Math.Ceiling(performanceCounter.NextValue());
      return Response.AsText(cpu.ToString());
    });
  }
  private void InitializePerformanceCounter()
  {
    performanceCounter = new PerformanceCounter();
    performanceCounter.CategoryName = "";
    performanceCounter.CounterName = "";
    performanceCounter.InstanceName = "";
    performanceCounter.NextValue();
    Thread.Sleep(1000);
  }
}

然后添加index.html页面在根目录下

<!DOCTYPE html>
<html>
<head>
<title>NancyTaskManager</title>
</head>
<body>
<label id="lblVal"></label>
<br />
<canvas id="cvPercentage"></canvas>
<br />
<br />
<canvas id="cvGraph" height="450" width="600"></canvas>
<script src="Scripts/jquery-2.1.0.js"></script>
<script src="Scripts/jquery.signalR-2.0.2.js"></script>
<script src="Scripts/Chart.js"></script>
<script src="/signalr/hubs"></script>
<script src="Scripts/taskManager.js"></script>
</body>
</html>

继续往根目录里面添加Startup类

[assembly:OwinStartup(typeof( NancyFxTaskManager.Startup))]
namespace NancyFxTaskManager
{
public class Startup
{
  public void Configuration(IAppBuilder app)
  {
    app.MapSignalR().UseNancy();
    
  }
}
}

好了我们准备就绪,看看运行效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程宝库

一、C#方法中参数类型有4种参数类型,有时候很难记住它们的不同特征,下图对它们做一个总结,使之更容易比较和对照。二、C#方法中的参数1、值参数 使用值参数,通过复制实参的值到形参的方式把数据传递到方法。方法 ...