.net中的3个Timer

时间:2021-05-29 20:37:26

一、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没看懂。还是尽量少用这个。