簡體   English   中英

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.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# - 如何停止計時器?

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

希望能幫助到你。

好的。 正如 Vijay Kumbhoje 在計時器完成時的評論中所說的那樣,watchTags 方法中的任何進程都會立即結束而不會完成工作。

如果 2020 年有人來到這里並看到這個已接受的答案,那就不對了。 Elapsed事件不會隨着timer.Stop()停止。 這只會再次停止啟動Elapsed事件,沒有別的。

我認為在這個線程中接受的答案做對了: c# Task cancelling when using System.Timers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM