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>
繼續(xù)往根目錄里面添加Startup類
[assembly:OwinStartup(typeof( NancyFxTaskManager.Startup))]
namespace NancyFxTaskManager
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR().UseNancy();
}
}
}

好了我們準備就緒,看看運行效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
c#檢測usb設備撥插類庫USBClassLibrary分享
這篇文章主要介紹了c#檢測usb設備撥插類庫USBClassLibrary的簡單示例,需要的朋友可以參考下2014-04-04
C#逐行分元素讀取記事本數(shù)據(jù)并寫入數(shù)據(jù)庫的方法
這篇文章主要介紹了C#逐行分元素讀取記事本數(shù)據(jù)并寫入數(shù)據(jù)庫的方法,通過StreamReader類里的ReadLine()方法實現(xiàn)逐行讀取的功能,是非常實用的技巧,需要的朋友可以參考下2014-12-12
C#實現(xiàn)泛型動態(tài)循環(huán)數(shù)組隊列的方法
隊列一種先進先出的數(shù)據(jù)結構,本文通過實例代碼給大家介紹下C#實現(xiàn)泛型動態(tài)循環(huán)數(shù)組隊列的方法,感興趣的朋友一起看看吧2022-01-01

