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.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
引用C# - how do you stop a timer?
使用timer.Stop();
或timer.Enabled = false;
希望对您有所帮助。
好的。正如 Vijay Kumbhoje 在计时器结束时的评论中所说,watchTags 方法中的任何进程都会立即结束而不会完成工作。
如果 2020 年有人到这里看到这个已接受的答案,那是不对的。 Elapsed
活动不会随着 timer.Stop()
而停止。这只会停止再次启动 Elapsed
事件,没有别的。
我认为在这个线程中接受的答案是正确的:
我有一个间隔为 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.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
引用C# - how do you stop a timer?
使用timer.Stop();
或timer.Enabled = false;
希望对您有所帮助。
好的。正如 Vijay Kumbhoje 在计时器结束时的评论中所说,watchTags 方法中的任何进程都会立即结束而不会完成工作。
如果 2020 年有人到这里看到这个已接受的答案,那是不对的。 Elapsed
活动不会随着 timer.Stop()
而停止。这只会停止再次启动 Elapsed
事件,没有别的。
我认为在这个线程中接受的答案是正确的: