如何检查类属性以启动倒计时计时器';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);
}
};
这里的问题是,这变成了递归,我不知道为什么
如果>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();
};