c# - 如何立即停止计时器

c# - How to stop a timer Immediately

我有一个间隔为 100 的 System.Timers.Timer。我的问题是,如果我在计时器中设置 enable = false,计时器方法中的当前工作进程是否会立即停止?或方法完成后。

private void watchTags(object obj, ElapsedEventArgs handler)
    {
        for(int i=0 ; i<10000;i++){
            // some works
        }
    }
private void stop_button(){
    watcher.Enabled = false;
}

我的循环是立即停止还是结束后停止?

执行 timer.Enabled = false 会停止计时器。与 timer.Stop();

相同

timer.Enabled = false = System.Threading.TimerSystem.Timers.Timer

timer.Stop();=System.Windows.Forms.Timer

如果你正在使用System.Timers.Timer你可以这样停止

timer.Enabled = false

如果您正在使用 System.Threading.Timer,请使用这个

timer.Change(Timeout.Infinite , Timeout.Infinite)

或使用

timer.Stop(); 

如果您正在使用 System.Windows.Forms.Timer

引用C# - how do you stop a timer?

使用timer.Stop();timer.Enabled = false;

希望对您有所帮助。

好的。正如 Vijay Kumbhoje 在计时器结束时的评论中所说,watchTags 方法中的任何进程都会立即结束而不会完成工作。

如果 2020 年有人到这里看到这个已接受的答案,那是不对的。 Elapsed 活动不会随着 timer.Stop() 而停止。这只会停止再次启动 Elapsed 事件,没有别的。

我认为在这个线程中接受的答案是正确的: