【发布时间】:2021-07-23 13:26:10
【问题描述】:
我正在使用 System.Timers.Timer 并且每隔 x 秒我需要在 ElapsedEvent 方法中执行一些任务。当我在 ElapsedEvent 方法中执行任务时,我希望停止计时器。但是,我有另一种可以启动计时器的方法,可以在 ElapsedEvent 运行时调用它。我的代码如下所示:
class MyClass {
Timer myTimer;
public MyClass {
myTimer = new System.Timers.Timer();
// init timer code here...
}
public void ElapsedEventTask(object source, ElapsedEventArgs e) {
myTimer.Enabled = false;
try
{
// do my tasks
}
catch
{
...
}
finally
{
myTimer.Enabled = true;
}
}
}
public void AnotherMethod() {
// do some things
myTimer.Enabled = true;
}
当我完成ElapsedEventTask 中的任务时,如何防止AnotherMethod 启动计时器?
【问题讨论】:
-
是
AnotherMethod方法打算只调用一次,第一次启动计时器,还是你还有一个停止计时器的方法,这样可以手动启动和停止计时器多次? -
AnotherMethod可以多次调用,还有另一种方法可以停止定时器。所以是的,myTimer可以手动启动和停止多次。
标签: c# multithreading timer locking system.timers.timer