zoukankan      html  css  js  c++  java
  • C#多线程编程之:Timer(定时器)使用示例

    Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。

    构造函数:Timer(TimerCallback callback, object state, int dueTime, int period)
    参数说明
      callback:一个 System.Threading.TimerCallback 委托,表示要执行的方法。
      state:一个包含回调方法要使用的信息的对象,或者为 null。
      dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可防止启动计时器。指定零(0) 可立即启动计时器。
      period:调用 callback 的时间间隔(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可以禁用定期终止。

    Timer.Change()方法:修改定时器的设置。(这是一个参数类型重载的方法)

    示例代码:

     

    复制代码
    using System;
    using System.Threading;

    namespace ThreadExample
    {
    //Timer信息对象 7
    class TimerObject
    {
    publicint Counter =0;
    }

    class App
    {
    publicstaticvoid Main()
    {
    TimerObject s
    =new TimerObject();
    //创建委托对象TimerCallback,该委托将被定时调用
    TimerCallback timerDelegate =new TimerCallback(CheckStatus);
    //创建一个时间延时2s启动,间隔为1s的定时器
    Timer timer =new Timer(timerDelegate, s, 2000, 1000);

    //检查计数器值
    while (s.Counter <10)
    {
    Thread.Sleep(
    1);
    }

    //更改timer执行周期,延时1s开始
    timer.Change(1000, 500);
    Console.WriteLine(
    "Timer被加快了!");

    //检查计数器值
    while (s.Counter <20)
    {
    Thread.Sleep(
    1);
    }

    //释放Timer
    timer.Dispose();
    Console.WriteLine(
    "Timer示例运行结束!");
    Console.ReadLine();
    }

    //下面是被定时调用的方法
    staticvoid CheckStatus(Object state)
    {
    TimerObject s
    =(TimerObject)state;
    s.Counter
    ++;
    Console.WriteLine(
    "当前时间:{0} 计数器值:{1}", DateTime.Now.ToString(), s.Counter);
    }
    }
    }
    复制代码

      程序首先创建一个定时器,延时2秒启动,每隔1秒调用一次CheckStatus()方法。当调用9次以后,修改时间间隔为500毫秒,且指定在1秒后重新开始。当计数达到19次,调用Dispose()方法删除了timer对象,终止程序。

  • 相关阅读:
    基于Modelsim的直方图线性拉伸
    基于Modelsim的直方图统计算法仿真
    基于Modelsim的均值滤波仿真
    基于Modelsim的直方图均衡化算法仿真
    基于FPGA的RGB图像转灰度图像算法实现
    基于Modelsim的视频捕获模拟仿真
    基于Modelsim的视频流仿真
    【MSSQL】执行大sql文件-内容乱码处理
    【WINForm】C#应用程序图标设置问题
    【dotNet Core】Swagger下简单的给WebApi分组
  • 原文地址:https://www.cnblogs.com/mili3/p/3737484.html
Copyright © 2011-2022 走看看