如何检查类属性以启动倒计时计时器';s获取价值

本文关键字:计时器 获取 倒计时 启动 何检查 检查 属性 | 更新日期: 2023-09-27 18:27:13

我有一个winform应用程序,它可以读取文件并更改、重命名等。
每次状态更改(更改、重命名、工作等)时,状态都会显示在相应的标签中,有时需要处理的下一个文件会延迟数秒,当发生这种情况时,我希望计时器倒计时,显示下一文件到来之前的时间
在主类中,我有一个属性(键入double),它接收下一个文件到来的时间(以秒为单位)。如果时间间隔超过5秒,我希望计时器启动
当它发生时,属性会得到秒数,计时器应该读取这个双倍和倒计时
我怎么能一直检查这个变量,当他得到一个合适的值时,计时器就会启动?

这是我的课如何获得延迟时间:

public class Delay
{   
    public event EventHandler _largeWait;
    public Delay(int numberOfSeconds)
    {
        _numberOfSeconds = numberOfSeconds;
    }
    public double _delayTime;
    public double _packetDelay
    {
        get { return _packetDelay; }
        set
        {
            _packetDelay = value;
            if (value > 5 && _largeWait != null)
            {
                _largeWait(this, EventArgs.Empty);
            }
        }
    }
}

然后在我创建Delay实例的地方:(在将值插入延迟变量之后)

_largeWait += (s, e) =>
    {
        if (_largeWait != null)
         {
             _largeWait(s, e);
         }
     };

这里的问题是,这变成了递归,我不知道为什么

如何检查类属性以启动倒计时计时器';s获取价值

如果>5s:,您可以实现setter而不是缩写形式并启动计时器

public class Delay
{
    public event EventHandler LargeWait;
    private double numberOfSeconds;
    public double NumberOfSeconds
    {
        get { return numberOfSeconds; }
        set
        {
            numberOfSeconds = value;
            if(value > 5 && LargeWait != null)
                LargeWait(this, EventArgs.Empty);
        }
    }
    public Delay(int numberOfSeconds)
    {
        this.numberOfSeconds = numberOfSeconds;
    }
}

然后在创建Delay实例的位置:

Delay delay = new Delay(sec);
delay.LargeWait += (s, e) => {
    timer.Tag = s; //s is the Delay instance
    timer.Start();
};