我有一个程序,用作我的arduino运动检测器的监视软件,我通过计时器请求传感器数据。我已经做到了所以警报必须通过按钮显式重置。因此,我的问题是;在更改检测变量之前,是否要将计时器的启用设置为false,然后启用它?
tl; dr启用已启用的计时器时会发生什么?这是不好还是只是重置?
答案 0 :(得分:1)
在System.Windows.Forms.Timer的实例上设置Enabled属性不会重置计时器。只有当您分配给Enabled的值与当前值不同时,计时器的状态才会更改,即:当前为False,您将其设置为True或当前为True,并将其设置为False。
在幕后,首先发生的事情是在对象上获取独占锁。在.Net 2和3.5中,这是通过使用Lock Statement来完成的。在.Net 4中,这是使用Monitor Class或更具体的Monitor.Enter()方法完成的。成功获取锁定后,将执行检查以确定新分配的Enabled值是否与当前值不同。
此信息是通过反编译System.Windows.Forms.dll程序集获得的。我会发布代码片段,但我不确定这样做的合法性。
总之,当已经启用时,可以将计时器设置为Enabled = true,但是每次执行此操作时都需要知道正在请求对象的独占采集。