我使用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...