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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值