检查值2秒

时间:2013-01-18 21:50:10

标签: c#

我有一个整数,其值发生变化,我想知道是否有办法检查该值是否相同,持续2秒。

如果num = 2持续2秒,那么Messagebox.show(“持续2秒”);

因为我的数字会立即改变。

4 个答案:

答案 0 :(得分:1)

如何让它跟踪上次更改的时间?

int _num;

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

public DateTime numModified { get; private set; }

答案 1 :(得分:0)

考虑从INotifyPropetyChanged - here is the description with example实施System.ComponentModel界面。

答案 2 :(得分:0)

这可能是多余的,我喜欢使用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线程的所有工作。

答案 3 :(得分:0)

尝试创建propertyBool,缓冲区和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则不是;否则就是。