Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-如何立即停止计时器_C#_Multithreading_Timer - Fatal编程技术网

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

c#-如何立即停止计时器,c#,multithreading,timer,C#,Multithreading,Timer,我有一个间隔为100的系统计时器。我的问题是,若我在定时器中设置enable=false,定时器方法中的当前工作进程是否立即停止?或者在方法完成之后 private void watchTags(object obj, ElapsedEventArgs handler) { for(int i=0 ; i<10000;i++){ // some works } } private void stop_button(){

我有一个间隔为100的系统计时器。我的问题是,若我在定时器中设置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;
}
private void watchTags(对象对象对象,ElapsedEventArgs处理程序)
{

对于(int i=0;i执行
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

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


希望有帮助。

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

如果2020年有人到这里看到这个被接受的答案,这是不对的。
已过的
事件不会随着
计时器停止()
。这只会再次停止启动
已用事件
而不会执行其他操作


我认为这篇文章中的答案是正确的:

所以谷歌在你这方面不起作用..现在来吧..例如,这里有一篇@MethodMan的帖子,我已经知道了。我的问题是进程何时终止。在完成当前方法之后,或者一旦启用set,那么请解释如何调用watchTags..你有一个for循环,但是你想在for循环内做什么..从持续时间约为100毫秒的硬件读取一些数据如果你的方法处于time ticker事件下,它将停止而不完成进程。