-5

値が変化する整数があります。値が2秒間同じかどうかを確認する方法があるかどうかを知りたいです。

if 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

これは不要かもしれません。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

propertyBool、バッファ、およびを作成してみてくださいTimersetter次のように変更します。

    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そうではありません。そうでなければ、そうです。

于 2013-01-18T21:57:05.497 に答える
0

INotifyPropetyChangedからインターフェイスを実装することを検討してください。ここSystem.ComponentModelは、例を使用して説明します

于 2013-01-18T21:54:36.997 に答える