public Timer (System.Threading.TimerCallback callback, object state, int dueTime, int period);
参数
callback
一个 TimerCallback 委托,表示要执行的方法。
state
一个包含回调方法要使用的信息的对象,或者为 null
。
dueTime
调用 callback
之前延迟的时间量(以毫秒为单位)。 指定 Infinite 可防止启动计时器。 指定零 (0) 可立即启动计时器。
period
调用 callback
的时间间隔(以毫秒为单位)。 指定 Infinite 可以禁用定期终止。
异常
dueTime
或 period
参数为负,并且不等于 Infinite。
callback
参数为 null
。
示例
public partial class Form1 : Form
{
System.Threading.Timer glTimer = null;
public Form1()
{
InitializeComponent();
//-----------------
// 第一个参数:指定了TimerCallback 委托,表示要执行的方法;
// 第二个参数:一个包含回调方法要使用的信息的对象,或者为空引用;
// 第三个参数:延迟时间——计时开始的时刻距现在的时间,单位是毫秒,指定为“0”表示立即启动计时器;
// 第四个参数:定时器的时间间隔——计时开始以后,每隔这么长的一段时间,TimerCallback所代表的方法将被调用一次,单位也是毫秒。指定 Timeout.Infinite 可以禁用定期终止。
/* change(X>0,Y>0) 定时器过X毫秒后调用一次,之后每间隔Y毫秒调用一次
* change(X>0,Y<=0) 定时器过X毫秒后调用一次,之后就不再调用了
*
* change(X=0,Y>0),定时器立即执行,之后每隔Y毫秒执行一次
* change(X=0,Y<=0)定时器立即执行,之后就不再调用了
*
* change(X<0,Y>0),停止定时器,
* change(X<0,Y<=0)停止定时器,
* */
glTimer = new System.Threading.Timer(TimeOutCallBack,null, -1,0);
}
private void Form1_Load(object sender, EventArgs e)
{
}
void TimeOutCallBack(object theObj)
{
Console.WriteLine(DtToStr(DateTime.Now) + " 定时到");
}
string DtToStr(DateTime theDt)
{
return theDt.ToString("hh:mm:ss,fff");
}
private void Button1_Click(object sender, EventArgs e)
{
int dueTime = int.Parse(dueTimeBt.Text);
int perTime = int.Parse(perTimeBt.Text);
if (dueTime < 0)
dueTime = -1;
if (perTime < 0)
perTime = -1;
glTimer.Change(dueTime, perTime);
Console.WriteLine(DtToStr(DateTime.Now) + " 开始计时");
}
}