System.Timers.Timer计时如何实现重头开始

时间:2022-07-13 20:38:09

static System.Timers.Timer xxTimer;
xxTimer = new System.Timers.Timer(5000);//5秒一触发
xxTimer.Elapsed += new ElapsedEventHandler(HelloWorld);
xxTimer.Enabled = true;



定时器5秒一触发HelloWorld执行,比如当前已经走了三秒,如何让他重头开始计时,从0秒开始计数,重新来
试了下
xxTimer.Stop();   
xxTimer.Start();发现他是接着三秒那个时间点继续执行,也就过了2秒就又执行了

10 个解决方案

#1


绝对是你自己搞错了

#2


引用 1 楼 shingoscar 的回复:
绝对是你自己搞错了


什么意思,我做了测试,的确是从第三秒继续延续的,不是从0s开始

#3


意思就是测试代码写的不对

#4


引用 3 楼 shingoscar 的回复:
意思就是测试代码写的不对


        static System.Timers.Timer xxTimer;

        static void Main(string[] args)
        {

            xxTimer = new System.Timers.Timer(5000);//设置盒采集时间频率
            xxTimer.Elapsed += new ElapsedEventHandler(HelloWorld);
            xxTimer.Enabled = true;

          while(true)
            {
                Console.ReadLine();
                boxTimer.Stop();

                boxTimer.Start();
                Console.ReadLine();
            }
        }

        static void HelloWorld(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("1234");
        }


键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

#5


boxTimer都是xxTimer

#6


该回复于2018-02-28 23:41:50被版主删除

#7


引用 6 楼 bd_xuzhen 的回复:
重新实例化一下


循环里面加也不行
xxTimer = new System.Timers.Timer(5000);

还是无法重置计时器

#8


引用 4 楼 fenglove2009 的回复:
键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!

#9


引用 8 楼 shingoscar 的回复:
Quote: 引用 4 楼 fenglove2009 的回复:

键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!


绝对是按了的,还是不能重置计时器

#10


引用 8 楼 shingoscar 的回复:
Quote: 引用 4 楼 fenglove2009 的回复:

键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!


已经解决了,去掉ReadLine就好了

#1


绝对是你自己搞错了

#2


引用 1 楼 shingoscar 的回复:
绝对是你自己搞错了


什么意思,我做了测试,的确是从第三秒继续延续的,不是从0s开始

#3


意思就是测试代码写的不对

#4


引用 3 楼 shingoscar 的回复:
意思就是测试代码写的不对


        static System.Timers.Timer xxTimer;

        static void Main(string[] args)
        {

            xxTimer = new System.Timers.Timer(5000);//设置盒采集时间频率
            xxTimer.Elapsed += new ElapsedEventHandler(HelloWorld);
            xxTimer.Enabled = true;

          while(true)
            {
                Console.ReadLine();
                boxTimer.Stop();

                boxTimer.Start();
                Console.ReadLine();
            }
        }

        static void HelloWorld(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("1234");
        }


键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

#5


boxTimer都是xxTimer

#6


该回复于2018-02-28 23:41:50被版主删除

#7


引用 6 楼 bd_xuzhen 的回复:
重新实例化一下


循环里面加也不行
xxTimer = new System.Timers.Timer(5000);

还是无法重置计时器

#8


引用 4 楼 fenglove2009 的回复:
键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!

#9


引用 8 楼 shingoscar 的回复:
Quote: 引用 4 楼 fenglove2009 的回复:

键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!


绝对是按了的,还是不能重置计时器

#10


引用 8 楼 shingoscar 的回复:
Quote: 引用 4 楼 fenglove2009 的回复:

键盘输入一个字母,开始触发,当输出1234后,等了3秒,我又输入一个字母,发现过了2秒就又输出了,而不是重新过5秒

ReadLine是要按回车才有效的!


已经解决了,去掉ReadLine就好了