检查值2秒
本文关键字:2秒 检查 | 更新日期: 2023-09-27 17:54:13
我有一个值变化的整数,我想知道是否有一种方法来检查2秒内值是否相同。
像如果num = 2 2秒然后消息框。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线程的工作
考虑从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
,则不是;