我一直在研究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/