软件编程
位置:首页>> 软件编程>> C#编程>> NancyFx框架检测任务管理器详解

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

作者:Lexan  发布时间:2023-02-18 13:10:53 

标签:NancyFx,任务管理器

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

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

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

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

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

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

然后分别安装一下组件

jQuery

Microsoft.AspNet.SignalR

Microsoft.Owin

Nancy

Nancy.Owin

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

CPUHub类

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


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

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

Broadcaster类

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


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);
   }
 }

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

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

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


<!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();

}
 }
}

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

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

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

来源:http://www.cnblogs.com/R00R/archive/2017/10/25/7733037.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com