我想知道是否有某种方法暂时暂停计时器然后重新启动它。
我有一个方法“DoSomething()”,可以在计时器事件中或在名为“Chooser()”的不同方法中调用。应该从定时器OR Chooser()调用DoSomething(),但不应该调用它两次。
问题是Chooser()需要一些时间来决定它是否应该调用DoSomething()。当Chooser()决定是否还应该调用DoSomething()时,不应该调用DoSomething()。这将导致DoSomething()被调用两次。
如果Chooser()确实选择调用DoSomething(),它将禁用计时器。同样,如果计时器调用DoSomething(),它将禁用Chooser()中的代码。
我想在Chooser()的开头删除定时器事件处理程序,然后在Chooser()的末尾重新添加它。但是,这不起作用,因为计时器可能会在Chooser()运行时触发事件,并且不会处理该事件。
我认为我不能使用锁,因为我只想调用一次DoSomething()。
如果我可以在Chooser()开始时暂停计时器然后在结束时再次启动计时器,那将是理想的,但我不相信存在这种可能性。
我可以添加一个标志,但我想知道是否有更好的东西。
答案 0 :(得分:0)
在锁定下设置一个标志DoSomething
正在运行的标志。同样在锁定下,测试是否已设置该标志。如果是的话,只需返回并不做任何事情。
无法可靠地停止计时器。即使在停止计时器之后,也可以同时交付Tick事件(同时多个滴答)。