我有一个计时器,它和一个ui元素的行为联系在一起,这样ui元素在30秒后会自动隐藏自己。在那之后,它只应该通过显式调用
Show
在元素上。我执行如下:
Private Sub myBtn_VisibleChanged(sender As Object, e As EventArgs)
_myBtn.Enabled = True
_myTmr.Start()
End Sub
Private Sub myTmr_Elapsed(sender As Object, e As EventArgs)
_myBtn.Hide()
_myBtn.Enabled = False
_myTmr.Stop()
End Sub
_myBtn
有
VisibleChanged
上述方法处理的事件和
_myTmr
设置方式是:
Dim _myTmr As System.Timers.Timer = New System.Timers.Timer(30000.0)
_myTmr.AutoReset = False
_myTmr.Enabled = False
AddHandler _myTmr.Elapsed, AddressOf myTmr_Elapsed
关于这个设置,我有几个问题:
-
我需要设置吗
_myTmr.Enabled
到
False
初始化时还是默认行为?我对此不确定,也无法找到关于这一点的说明文件。
-
如何
AutoReset
物业工作?是否将其设置为
假
意味着
Elapsed
只会被提升一次?在这种情况发生后,计时器的值是什么?将呼叫
Start
在
MyTMR
再次,原因
逝去
再长大一次?
-
看来
myTmr_Elapsed
抛出一个
InvalidOperationException
因为
逝去
事件是从与UI线程不同的线程引发的。有打电话的方法吗
Hide
在用户界面线程上?