【发布时间】:2016-04-29 07:34:42
【问题描述】:
我想监控我的 ASP.NET MVC5 应用程序的 CPU 性能,用户可以选择他们想要监控的 PC。 我使用 SignalR 来监控实时 CPU 性能。 它适用于第一个 CPU,问题是一旦用户选择另一台 PC 进行监控,将根据this link 创建另一个新任务,以便之前和新任务都将其数据发送到客户端图表。
处理我的问题的解决方案是什么,以便一旦用户更改 PC,相应的 PC 数据就会发送到客户端聊天,或者我可能需要更改我的代码,以便只有第一个当前任务可以继续发送数据。
非常感谢任何帮助。
这是我的代码,每次用户选择任何 PC 时都会调用它:
public class MonitorHub : Hub
{
CancellationTokenSource wtoken;
public MonitorHub()
{
wtoken = new CancellationTokenSource();
}
public void StartCounterCollection(string pcName)
{
var unitOfWork = new CMS.Data.UnitOfWork();
var task = Task.Factory.StartNew(async () =>
{
var perfService = new PerfCounterService();
// await FooAsync(perfService, ref pcName);
while (true)
{
var result = perfService.GetResult(pcName);
Clients.All.newCounter(result);
await Task.Delay(2000, wtoken.Token);
}
}
, wtoken.Token);
}
【问题讨论】:
-
你没有包含你引用的链接..
-
谢谢,我修好了。
标签: asp.net-mvc multithreading signalr task