我有一个整数,其值会发生变化,我想知道是否有办法检查该值是否在 2 秒内相同。
比如如果 num = 2 for 2 sec then Messagebox.show("for 2 sec");
因为我的数字会立即改变。
我有一个整数,其值会发生变化,我想知道是否有办法检查该值是否在 2 秒内相同。
比如如果 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; }
考虑实现INotifyPropetyChanged
接口System.ComponentModel
-这里是示例的描述。
这可能是多余的,我喜欢使用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 线程的工作。
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.