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

时间:2015-07-02 04:34:50

标签: c# multithreading timer

我有一个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;
}

是我的循环立即停止还是在完成后?

5 个答案:

答案 0 :(得分:0)

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

相同

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

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

答案 1 :(得分:0)

如果您使用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?

答案 2 :(得分:0)

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

希望它有所帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果有人在2020年去这里看到这个公认的答案,那是不对的。 Elapsed事件不会以timer.Stop()停止。这样只会再次停止启动Elapsed事件,

我认为此线程中的正确答案正确无误:c# Task cancellation when using System.Timers