Restful web API 静态上下文?

Restful web API with static context?

我正在编写一个工具,您可以在其中查看 CPU 的 PerfomanceCounter.NextValue() 或 Web 中的内存。现在我在绘制图表的前端有一个休息网站 api 和 angular。我考虑过 Websockets,但我认为最好从前端使用轮询。但是 rest api 方法应该独立于对象,性能计数器 class 总是需要很多时间来初始化。

我已经尝试在每次收到 get 请求时初始化性能计数器,但这会消耗很多时间并且响应时间非常糟糕。我想看到实时图表,也许 cpu 每秒都有一个新值。

你知道如何避免每次都初始化吗?

您可以使用 Lazy 静态初始化,PerformanceCounter 对象是安全的。

例如:

public static Lazy<PerformcanceCounter> Counter= new Lazy<PerformcanceCounter>(() =>{

    return new PerformanceCounter(categoryName, counterName, false);
});

然后在如下代码中使用它:

Counter.Value.Next();

初始化只会运行一次,在第一次访问 Lazy 对象时。

另一个技巧是use static constructor。 唯一不同的是,类型构造函数将运行 of first access to the type.