一、System.Timers.Timer并不是调用Start方法就执行,而是在过了设定的周期再调用Start才执行(System.Windows.Forms.Timer也一样)。
获取或设置一个值,该值指示 Timer 是应在每次指定的间隔结束时引发 Elapsed 事件,还是仅在指定的间隔第一次结束后引发该事件。
如果 Timer 应在每次间隔结束时引发 Elapsed 事件,则为 true;如果它仅在间隔第一次结束后引发一次 Elapsed 事件,则为 false。 默认值为 true。
using System.Timers; namespace ConsoleApplication1 { class Program { static Timer t1 = new Timer(2000); static void t1_Elapsed(object sender, ElapsedEventArgs e) { Console.WriteLine("timer run..."); } static void Main(string[] args) { t1.Elapsed += new ElapsedEventHandler(t1_Elapsed); t1.Start(); Console.ReadLine(); } } }
二、System.Windows.Forms
using System.Windows.Forms; namespace ConsoleApplication1 { class Program { static Timer myTimer = new Timer(); static bool exitFlag = false; static void Main(string[] args) { myTimer.Tick += new EventHandler(myTimer_Tick); myTimer.Interval = 5000; myTimer.Start(); while (exitFlag == false) { Application.DoEvents();//处理队列中的消息。不加这句,将不进入Timer的Tick事件 } } static void myTimer_Tick(object sender, EventArgs e) { myTimer.Stop(); if (MessageBox.Show("Continue running?", "友情提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { myTimer.Enabled = true; } else { exitFlag = true; } } } }
三、System.Threading.Timer
这是个变态,MSDN上的demo没看懂。还是尽量少用这个。
版权声明:本文为博主原创文章,未经博主允许不得转载。