检查值2秒

本文关键字:2秒 检查 | 更新日期: 2023-09-27 17:54:13

我有一个值变化的整数,我想知道是否有一种方法来检查2秒内值是否相同。

像如果num = 2 2秒然后消息框。Show ("for 2 sec");

因为我的号码瞬息万变。

检查值2秒

如何让它跟踪它最后一次更改的时间?

int _num;
public int num
{
    get { return _num; }
    set 
    {
        if(value != _num)
        {
            _num = value;
            numModified = DateTime.Now;
        }
    }
}
public DateTime numModified { get; private set; }

这可能是多余的,我喜欢使用DispatcherTimer。这将每2秒滴答一次以查找更改:

private DispatcherTimer _checkNumberTimer = null;
private int _myNumber = int.MinValue;
private int _lastValue = int.MaxValue;
public Constructor1(){
  _checkNumberTimer = new DispatcherTimer();
  _checkNumberTimer.Tick += new System.EventHandler(HandleCheckNumberTick);
  _checkNumberTimer.Interval = new TimeSpan(0, 0, 0, 2); //Timespan of 2 seconds
  _checkNumberTimer.Start();
}
private void HandleLoginOrderDispatcherTick(object sender, System.EventArgs e) {
  if(_myNumber == _lastValue){
    MessageBox.Show("Alert!");
    _checkNumberTimer.Stop(); //If you want
  }
  _lastValue = _myNumber;
}
private void SomeOtherCodeAffectingMyNumber(int something){
  _myNumber = something;
}

您需要包括System.Windows.Threading

DispatcherTimer的好处是它处理所有委托给UI线程的工作

考虑从System.ComponentModel实现INotifyPropetyChanged接口-这里是示例描述

尝试创建一个property,一个Bool,一个Timer缓冲区。现在像这样改变setter:

    public int Variable
    {
        get { return _variable; }
        set
        {
            yourtimer.Stop();
            IsLongerThanTwoSec = false;
            _variable = value;
            yourtimer.Start();
        }
    }

创建timer,并设置.Elapsed:

        bool IsLongerThanTwoSec = false;
        Timer timer = new Timer(2000);
        timer.Elapsed += (e, s) => IsLongerThanTwoSec = true;

如果IsLongerThanTwoSec是false,则不是;