-5

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

比如如果 num = 2 for 2 sec then Messagebox.show("for 2 sec");

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

4

4 回答 4

1

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

int _num;

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

public DateTime numModified { get; private set; }
于 2013-01-18T21:55:42.773 回答
0

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

于 2013-01-18T21:54:36.997 回答
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 线程的工作。

于 2013-01-18T21:56:37.053 回答
0

Try to create a property, a Bool, buffer and a Timer. Now change the setter like this:

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

Create a timer like this and set this .Elapsed:

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

if IsLongerThanTwoSec is false it is not; otherwise, it is.

于 2013-01-18T21:57:05.497 回答