C#定时器停止

时间:2016-10-14 08:08:46

标签: c# timer

对于测试,我设置了一个每秒只计算int的课程:

class TestComp1
{
    public TestComp1()
    {
        var timer = new Timer(o => TestInt++,null,0,1000);
    }

    [ViewableProperty]
    public int TestInt { get; set; } = 0;
}

问题是这个Timer似乎在大约一分钟后停止工作 如果我重写它以使用Thread而不是它继续工作。所以它似乎真的是停止的计时器。

有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:5)

您没有引用构造函数范围之外的计时器。构造函数完成的那一刻,不再引用计时器,垃圾收集器将收集它。

您可以通过使用计时器的字段(或其他任何可以防止在您需要计时器的地方没有引用的地方来修复它。)

class TestComp1
{
    private Timer _timer;

    public TestComp1()
    {
        _timer = new Timer(o => TestInt++,null,0,1000);
    }

    [ViewableProperty]
    public int TestInt { get; set; } = 0;
}