Thread.Timer的使用

public Timer (System.Threading.TimerCallback callback, object state, int dueTime, int period);

参数

callback

TimerCallback

一个 TimerCallback 委托,表示要执行的方法。

state

Object

一个包含回调方法要使用的信息的对象,或者为 null

dueTime

Int32

调用 callback 之前延迟的时间量(以毫秒为单位)。 指定 Infinite 可防止启动计时器。 指定零 (0) 可立即启动计时器。

period

Int32

调用 callback 的时间间隔(以毫秒为单位)。 指定 Infinite 可以禁用定期终止。

异常

ArgumentOutOfRangeException

dueTime 或 period 参数为负,并且不等于 Infinite。

ArgumentNullException

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) + " 开始计时");
        }
    }

 

你可能感兴趣的:(C#)