c#定时器停止
本文关键字:定时器 | 更新日期: 2023-09-27 18:13:06
对于一个测试,我设置了一个类,它只计算每秒一个int
:
class TestComp1
{
public TestComp1()
{
var timer = new Timer(o => TestInt++,null,0,1000);
}
[ViewableProperty]
public int TestInt { get; set; } = 0;
}
问题是这个Timer
似乎在大约一分钟后停止工作。
如果我用Thread
来重写它,它仍然可以工作。所以看起来真的是计时器停止了。
有人知道为什么会发生这种情况吗?
在构造函数的作用域之外没有对计时器的引用。构造函数完成后,计时器将不再被引用,并将被垃圾收集器收集。
你可以通过为计时器使用一个字段来修复它(或者其他任何可以防止在需要计时器的地方没有引用的东西)
class TestComp1
{
private Timer _timer;
public TestComp1()
{
_timer = new Timer(o => TestInt++,null,0,1000);
}
[ViewableProperty]
public int TestInt { get; set; } = 0;
}