带有对象和非静态方法的C#多线程?

时间:2019-07-19 16:32:39

标签: c# multithreading performance performancecounter

我目前正在C#类库上进行开发,您可以在其中测量一些基本性能指标,例如cpu使用率或内存使用率。

实际上,我仅使用静态类和方法来实现它,因为我使用PerformanceCounter类来测量cpu,内存等。

我几乎可以在使用Tasks的同时测量此值,但只能使用静态方法来给出结果测量列表。

我的问题是此实现不是那么干净,也不是真正面向对象的。因为在此之后,我等待所有任务完成Task.WaitAll(任务集合)。然后,我用此测量值计算平均值,最小值,最大值...,然后再次开始进行此测量,但要使用旧的平均值,最小值,最大值...作为比较。之所以中断测量过程,是因为我将测量结果写入文件,并且当我让任务以自己的方式运行并让任务直接写入文件时,测量的顺序并不总是相同的。 >

无论如何,有没有要处理的对象。例如:

public class MeasuringUtils {

public List<Measurement> Measurements {get; set;}

public double Average {get; set;}

public double Min {get; set;}

public double Max {get; set;}

//this should be a method used by a task and should be threadsafe
public void StartMeasuring(int duration, int interval){
//this is PSEUDO CODE
Measure the CPU
if new min set min, if new max set max, calculate average
Write Measurements to Measurement Collection

}

然后此代码可再次与此类的多个对象一起运行。

我的问题也许听起来有些奇怪,但是您对这个编码问题以及如何用任务和对象解决有什么建议吗?

感谢您的帮助!

0 个答案:

没有答案
相关问题