我一直在研究Timer类(http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx),但是关于计时器的事情是,它正在进行中。一口气有办法阻止它吗?还是经过5次?

现在,我正在执行以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace TimerTest
{
    class Program
    {
        private static System.Timers.Timer aTimer;
        static void Main(string[] args)
        {
            DoTimer(1000, delegate
            {
                Console.WriteLine("testing...");
                aTimer.Stop();
                aTimer.Close();
            });
            Console.ReadLine();
        }

        public static void DoTimer(double interval, ElapsedEventHandler elapseEvent)
        {
            aTimer = new Timer(interval);
            aTimer.Elapsed += new ElapsedEventHandler(elapseEvent);
            aTimer.Start();
        }
    }
}

最佳答案

它并没有像现在那样发展。 Elapsed事件引发一次并停止,因为您已调用Stop。无论如何,请像下面那样更改代码以完成所需的操作。

private static int  iterations = 5;
static void Main()
{
  DoTimer(1000, iterations, (s, e) => { Console.WriteLine("testing..."); });
  Console.ReadLine();
}

static void DoTimer(double interval, int iterations, ElapsedEventHandler handler)
{
  var timer = new System.Timers.Timer(interval);
  timer.Elapsed += handler;
  timer.Elapsed += (s, e) => { if (--iterations <= 0) timer.Stop(); };
  timer.Start();
}

关于c# - C#计时器类-在执行一定数量后停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1416399/

10-09 02:09