Timer类:设置一个定时器,定时执行用户指定的函数。

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

初始化一个Timer对象: 
Timer timer = new Timer(timerDelegate, s,1000, 1000);

// 第一个参数:指定了TimerCallback 委托,表示要执行的方法;
// 第二个参数:一个包含回调方法要使用的信息的对象,或者为空引用;
// 第三个参数:延迟时间——计时开始的时刻距现在的时间,单位是毫秒,指定为“0”表示立即启动计时器;
// 第四个参数:定时器的时间间隔——计时开始以后,每隔这么长的一段时间,TimerCallback所代表的方法将被调用一次,单位也是毫秒。指定 Timeout.Infinite 可以禁用定期终止。

Timer.Change()方法:修改定时器的设置。(这是一个参数类型重载的方法)
使用示例:  timer.Change(1000,2000);

Timer类的程序示例(来源:MSDN):

using System;
using System.Threading;

namespace ThreadExample
{
    class TimerExampleState 
    {
    public int counter = 0;
    public Timer tmr;
    }

class App 
    {
    public static void Main()
    {
        TimerExampleState s = new TimerExampleState();

//创建代理对象TimerCallback,该代理将被定时调用
          TimerCallback timerDelegate = new TimerCallback(CheckStatus);

//创建一个时间间隔为1s的定时器
            Timer timer = new Timer(timerDelegate, s,1000, 1000);
            s.tmr = timer;

//主线程停下来等待Timer对象的终止
            while(s.tmr != null)
            Thread.Sleep(0);
            Console.WriteLine("Timer example done.");
            Console.ReadLine();
    }

//下面是被定时调用的方法
      static void CheckStatus(Object state)
    {
            TimerExampleState s =(TimerExampleState)state;
            s.counter++;
            Console.WriteLine("{0} Checking Status {1}.",DateTime.Now.TimeOfDay, s.counter);

if(s.counter == 5)
            {
                //使用Change方法改变了时间间隔
                (s.tmr).Change(10000,2000);
                Console.WriteLine("changed");
            }

if(s.counter == 10)
            {
                Console.WriteLine("disposing of timer");
                s.tmr.Dispose();
                s.tmr = null;
            }
    }
    }
}

  程序首先创建了一个定时器,它将在创建1秒之后开始每隔1秒调用一次CheckStatus()方法,当调用5次以后,在CheckStatus()方法中修改了时间间隔为2秒,并且指定在10秒后重新开始。当计数达到10次,调用Timer.Dispose()方法删除了timer对象,主线程于是跳出循环,终止程序。

作者: XuGang   网名:钢钢
出处: http://xugang.cnblogs.com
声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

转载于:https://blog.51cto.com/kestrelsaga/616713

C#多线程学习5——多线程的自动管理(定时器)相关推荐

  1. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  2. C#多线程学习(五) 多线程的自动管理(定时器) (转载系列)——继续搜索引擎研究...

    Timer类:设置一个定时器,定时执行用户指定的函数.               定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. 初始化一个Timer对象: Timer timer ...

  3. C#多线程学习(一) 多线程的相关概念(转自xugang的blog)

    C#多线程学习(一) 多线程的相关概念 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又是由多个线程所组成的. 什么是线程? 线程 ...

  4. [转载]C#多线程学习(一) 多线程的相关概念

    原文地址:http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中 ...

  5. VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)

    这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...

  6. [转]C#多线程学习(四) 多线程的自动管理(线程池)

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  7. C#多线程学习(四) 多线程的自动管理(线程池)

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  8. C#多线程学习(五) 多线程的自动管理(定时器)

    Timer类:设置一个定时器,定时执行用户指定的函数.               定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. 初始化一个Timer对象: Timer timer ...

  9. 【java多线程学习】多线程的基本概念

    今天开始系统的学习了java多线程有关的基础知识,大致先分为三个步骤:多线程的基本概念,多线程的两种使用方法(继承Thread类.实现Runable接口),线程的同步.这里先记录下下多线程的基本概念. ...

最新文章

  1. java 泛型解耦,T-MVP:泛型深度解耦下的MVP大瘦身
  2. 海马苹果助手ipad版_iOS逆向-ipa包重签名及非越狱手机安装多个微信!
  3. Linux常用命令汇总--ln
  4. 第 5-3 课:线程池——Executors + 面试题
  5. 20210621:力扣第246周周赛(上)
  6. C# 6.0 的那些事
  7. XXX集团财务决策支持系统——用友财务系统现有的财务报表(系列四)
  8. c# equals与==的区别(转载)
  9. 【Java系列】八大排序算法
  10. 红帽子linux5.5安装,红帽子企业Linux 5安装  硬盘安装
  11. 电商巨头角逐付费会员制,新零售生态或成为决胜关键?
  12. Mysql安装错误码1722_软件error 1771, error1722,error 1723解决办法
  13. Civil 3d 之枚举 SpiralType
  14. 生物信息中的Python 05 | 从 Genbank 文件中提取 CDS 等其他特征序列
  15. Vue中el-dialog的用法
  16. 整理:学术论文发表过程中的审稿人意见答复技巧
  17. 赵栋201771010137《面向对象程序设计(java)》第七周学习总结
  18. Java中hasNext()的作用
  19. 【Excel办公技能图文教程】
  20. 申请公网ip后,配置光猫,路由器使用公网ip步骤

热门文章

  1. 敏捷开发签名人建议开发者放弃“敏捷”
  2. Python之路【第十二篇】:函数
  3. 学习笔记-安装ELK5
  4. 日媒:中国去年装机量猛增 成最大光伏日媒:中国去年装机量猛增 成最大光伏发电国家发电国家...
  5. Chapter 02:复合 VS 继承
  6. win7+php5.3.10下安装memcache (转)
  7. 如何更新 Exchange2003 SP2 中的智能邮件筛选器版本
  8. SLP是最近在BCH中引入的一个功能,它允许创建定制令牌。
  9. BCH或许才是真正的未来
  10. Onchain Capital创始人看涨BCH