对于测试我设置了一个简单计算int每秒的类:
class TestComp1
{
public TestComp1()
{
var timer = new Timer(o => TestInt++,null,0,1000);
}
[ViewableProperty]
public int TestInt { get; set; } = 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是这Timer似乎在大约一分钟后停止工作.
如果我重写它使用一个Thread而不是它继续工作.所以它似乎真的是停止的计时器.
有没有人知道为什么会这样?
小智 5
您没有引用构造函数范围之外的计时器.构造函数完成的那一刻,不再引用计时器,垃圾收集器将收集它.
您可以通过使用计时器的字段(或任何其他阻止没有您需要计时器的引用的东西来修复它.)
class TestComp1
{
private Timer _timer;
public TestComp1()
{
_timer = new Timer(o => TestInt++,null,0,1000);
}
[ViewableProperty]
public int TestInt { get; set; } = 0;
}
Run Code Online (Sandbox Code Playgroud)