値が変化する整数があります。値が2秒間同じかどうかを確認する方法があるかどうかを知りたいです。
if num = 2 for 2 sec then Messagebox.show("for 2 sec"); のように
私の番号は即座に変化するからです。
値が変化する整数があります。値が2秒間同じかどうかを確認する方法があるかどうかを知りたいです。
if num = 2 for 2 sec then Messagebox.show("for 2 sec"); のように
私の番号は即座に変化するからです。
最後に変更された日時を追跡するのはどうですか?
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スレッドへの委任のすべての作業を処理することです。
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
そうではありません。そうでなければ、そうです。
INotifyPropetyChanged
からインターフェイスを実装することを検討してください。ここSystem.ComponentModel
では、例を使用して説明します。