我想知道是否有某种方法暂时暂停计时器,然后重新启动它。暂时暂停System.Timers.Timer在C#
我有一个方法“DoSomething()”,它可以从一个定时器事件中或称为“Chooser()”的不同方法中调用。应该从定时器或Chooser()中调用DoSomething(),但不应该调用两次。
问题是Chooser()需要一些时间来决定是否应该调用DoSomething()。当Chooser()决定是否应该调用DoSomething()时,DoSomething()不应该被调用。这会导致DoSomething()被调用两次。
如果选择器()确实选择调用DoSomething(),它将禁用定时器。同样,如果定时器调用DoSomething(),它将禁用Chooser()中的代码。
我想在选择器()的开始处移除timer eventhandler,然后在Chooser()的末尾重新添加它。但是,这不起作用,因为计时器可能会在Chooser()运行时触发事件,并且不会处理该事件。
我不认为我可以使用锁,因为我只想调用DoSomething()一次。
如果我可以在Chooser()的开头暂停计时器,然后在最后再次启动计时器,这将是理想的,但我不认为存在这种可能性。
我可以添加一个标志,但我想知道是否有更好的。
有一个小窗口,可以使定时器在停止后触发。考虑你的解决方案的可能性。 – hatchet