• Winfrom之定时器Timer


    Winfrom中有3种定时器的用法
    1、基于控件的定时器          : System.Windows.Forms.Timer  winfrom控件
    2、基于线程控制的定时器    : System.Threading.Timer 基于线程
    3、基于服务控制的定时器    : System.Timers.Timer  基于服务
    
    区别:
       1、基于控件的定时器  是独占一个线程的  可以修改UI元素  使用Winfrom程序(首选)
             缺点:在Tick事件里面不能加载太多数据  会出现堵塞现象 导致下次触发 以及其他控件
    
       2、基于线程的定时器  不能直接修改UI元素,要通过委托的方法来修改UI元素
              优点:时间过长,也不会失去响应,不会影响下一次事件的触发
    
    
    主要事件:Winfrom中的定时器  (Tick事件)
                   线程中的定时器(Elapsed事件)
    常用属性:控件.Enabled=false;//不启用定时器
         控件.Interval=1000;//触发的时间 1000毫秒=1秒 主要代码:
    Winfrom的定时器:
    开启加载:
      lblTime.Text = "当前时间为:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//获取当前时间
                DTime.Enabled = true;
    在Tick事件中触发界面显示
     lblTime.Text = "当前时间为:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    线程定时器:
    在加载界面中手动创建一个委托定时器
          System.Timers.Timer timer1 = new System.Timers.Timer();//手动创建一个线程定时器
                timer1.Interval = 1000;//定时时间设置为1秒
                timer1.Elapsed += timer1_Elapsed;
                timer1.Start();
    ----------------------------------------------
    int count=0;//设置定时的次数
    ----------------------------------------------
    在线程定时器的Elapsed事件中的

        count += 1;
                #region 修改UI元素  通过一个委托方法 来实现UI元素控制
                Action act = UpdataTime;//调用一个委托
                this.Invoke(act); //通过Invoke()完成 修改UI元素 --通过委托来修改UI元素
                #endregion

                if (count > 10)
                {
                    System.Timers.Timer timer = (System.Timers.Timer)sender;
                    timer.Stop();//停止
                }

    委托方法:

        private void UpdataTime()//定义一个委托 
            {
                lblDt1.Text = DateTime.Now.ToString();
            }
    主要代码图:

      

  • 相关阅读:
    给安全平台编写插件模块的思路分享
    Chrome浏览器快捷键操作
    【字节青训营后端专场】Go 语言上手 工程实践
    【字节青训营后端专场】Go 语言上手 基础语言
    logisim元器件翻译
    MEM in logisim
    将控制映射至硬件 RISCV组成原理 附录C
    curl参数给我仔细看!
    JS 实现计算获取某一集合的幂集的函数
    关于Next.js项目启动后页面空白(控制台报错)问题的排查
  • 原文地址:https://www.cnblogs.com/leiminghui/p/13529953.html
Copyright © 2020-2023  润新知