我有一个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;
}
是我的循环立即停止还是在完成后?
答案 0 :(得分:0)
执行timer.Enabled = false
会停止计时器。与timer.Stop();
timer.Enabled = false
= System.Threading.Timer
或System.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
答案 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