我有一个整数,其值发生变化,我想知道是否有办法检查该值是否相同,持续2秒。
如果num = 2持续2秒,那么Messagebox.show(“持续2秒”);
因为我的数字会立即改变。
答案 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)
尝试创建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
则不是;否则就是。