使用计时器回调时在静态类中使用"全局"变量的替代方法



我使用TimerCallback方法每5秒在屏幕上显示一次统计信息,如下所示:

var timerCallback = new TimerCallback(_outputDisplayer.SetupThreading);
var stateTimer = new Timer(timerCallback, null, 0, 5000);

我有一个静态类,其中包含我正在计算的统计变量。计时器关闭时,会调用outputDisplay类中的一个方法并显示其值。

public static class Properties
{
public static decimal PercentOfChocolateIceCream { get; set; }  = 0
public static decimal PercentOfRedCars { get; set; } = 0
}

由于我不是自己调用显示统计信息的方法,所以我一直在这个静态类中使用字段。在没有静态类和变量的情况下,有更好的方法可以做到这一点吗?

改为使用实例类,并将实例传递给计时器的构造函数。回调可以从传递给它的state参数中读取它。

public class Properties
{
public decimal PercentOfChocolateIceCream { get; set; }  = 0
public decimal PercentOfRedCars { get; set; } = 0
}
var properties = new Properties();
var timerCallback = new TimerCallback(_outputDisplayer.SetupThreading);
var stateTimer = new Timer(timerCallback, properties, 0, 5000);

void SetupThreading(object? state)
{
var properties = (Properties)state;
//etc...

最新更新