[英]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.Timer
或System.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
使用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.