Timer 定时器

  Timer是一个经常使用的东西,它有3种类型的Timer。分别是:

  1.定义在System.Windows.Forms里;

  2.定义在System.Threading.Timer类里;

  3.定义在System.Timers.Timer类里;

  ◆System.Windows.Forms.Timer

  应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。   
  
  ◆System.Timers.Timer

  和System.Threading.Timer非常类似,它们是通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。

  ◆System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

一、属性

  AutoReset   获取或设置一个值,该值指示 Timer 是应在每次指定的间隔结束时引发 Elapsed 事件,还是仅在指定的间隔第一次结束后引发该事件。
  Container    获取 IContainer,它包含 Component。 (继承自 Component。)
  Enabled     获取或设置一个值,该值指示 Timer 是否应引发 Elapsed 事件。
  Interval     获取或设置引发 Elapsed 事件的间隔。
  Site        基础结构。获取或设置在设计模式中将 Timer 绑定到其容器的站点。 (重写 Component.Site。)
  SynchronizingObject   获取或设置对象,该对象用于在间隔过后封送发出的事件处理程序调用。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

public class Program

{

    static void Main(string[] args)

    {

        //下面来看看默认值

        Timer t = new Timer();

        Console.WriteLine(t.AutoReset); //True 设置是执行一次(false)还是一直执行(true);

        Console.WriteLine(t.Container);

        Console.WriteLine(t.Enabled);   //False 到达时间的时候是否执行Elapsed事件;

        Console.WriteLine(t.Interval);  //100 当执行完一次后,隔多长时间才执行第二次

        Console.WriteLine(t.Site);      //获取或设置在设计模式中将 Timer 绑定到其容器的站点。

        Console.WriteLine(t.SynchronizingObject);   //获取或设置对象,该对象用于在间隔过后封送发出的事件处理程序调用。

        }   

}

  下面给出一个每隔一段时间, 执行一次任务的实例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public class Program

{

    static void Main(string[] args)

    {

        Console.WriteLine("ss");

        Timer t = new Timer(2000);

        t.Enabled = true;       //到达时间就执行一次,或者是持续执行

        t.AutoReset = true;     //一直执行

        //t.Elapsed += MyHandler;

        

        //Lambda表达式的方式调用

        //t.Elapsed += (sender, e) =>

        //    {

        //        Console.WriteLine("你好");

        //    };

        Console.ReadKey();

    }

    public static void MyHandler(object sender, ElapsedEventArgs e)

    {

        Console.WriteLine("你好");

        //File.AppendAllText(@"D:\123.txt","你好",Encoding.Default);

    }

}

二、方法

  BeginInit     开始用于窗体或由其他组件使用的 Timer 的运行时初始化。
  Close        释放由 Timer 占用的资源。
  CreateObjRef    创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
  Dispose()     释放由 Component 使用的所有资源。 (继承自 Component。)
  EndInit       结束用于窗体上或由其他组件使用的 Timer 的运行时初始化。
  Equals(Object)   确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
  GetHashCode     用作特定类型的哈希函数。 (继承自 Object。)
  GetLifetimeService  检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
  GetType       获取当前实例的 Type。 (继承自 Object。)
  InitializeLifetimeService   获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
  Start     通过将 Enabled 设置为 true 开始引发 Elapsed 事件。
  Stop     通过将 Enabled 设置为 false 停止引发 Elapsed 事件。

Timer 定时器,布布扣,bubuko.com

时间: 2024-12-11 05:56:03

Timer 定时器的相关文章

duilib 界面库 实现timer定时器

看了大神介绍的duilib感觉已被同龄人狠狠地甩在背后.所以痛下决心,之后要多花时间写代码. 大神教程传送门: http://www.cnblogs.com/Alberl/p/3341956.html 现在的问题是想基于duilib实现一个timer定时器.工程基础大概是在 http://www.cnblogs.com/Alberl/p/3343763.html 因为自己的东西是基于大神的东西写的,所以要把大神的教程看得差不多才知道我在说什么.O(∩_∩)O~~ 前台大概长这个样子: 稍微修改了

第二十八(线程的同步、守护线程、Timer 定时器)

/* 模拟ATM取款,不是线程同步机制,多线程同时对一个账户进行操作 t1 和 t2 异步编程模型:t1线程执行t1,t2线程执行的是t2,两个线程之间谁也不等于谁 同步编程模型:t1线程和t2线程执行,当t1线程必须等于t2的线程执行结果之后,t1线程才能执行 这是同步编程模型. 什么时候需要引入同步 1. 为了数据安全,尽管应用程序的使用率低,但是为了保证数据安全性,必须的加入线程同步机制 线程同步机制 使程序变成了(等同)单线程 2. 在什么条件下需要使用线程同步 <1> 必须是多线程环

C#中WebService 的 Timer定时器过段时间后自动停止运行

我用.net做的一个Timer定时器,定时获取短信并给予回复,但大概过了十几个小时以后,Timer定时器会自动停止,再发送短信就不能收到回复,需要在服务器中重新运行定时器才可以,请教各位! 我是在.net framework中的,有一个Global.asax全局应用程序文件,帖代码:public class Global : System.Web.HttpApplication { double iTimerInterval; System.Timers.Timer timer = new Sy

关于C#中Timer定时器的重入问题解决方法

项目中用到了定时器随着服务启动作定时任务,按指定的准点时间定时执行相关操作,但是在指定准点时间内我只想让它执行一次,要避免重入问题的发生. 首先简单介绍一下timer,这里所说的timer是指的System.Timers.timer,顾名思义,就是可以在指定的间隔是引发事件.官方介绍在这里,摘抄如下: Timer 组件是基于服务器的计时器,它使您能够指定在应用程序中引发 Elapsed 事件的周期性间隔.然后可通过处理这个事件来提供常规处理. 例如,假设您有一台关键性服务器,必须每周 7 天.每

java Timer定时器管理类

1.java timer类,定时器类.启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定时操作所执行的动作,后一个参数是豪秒,代表间隔多久执行一次.2.TimerTask类,java.util.TimerTask,具体定时执行的操作.里面有个run方法,和线程run方法一样(就是线程).5.Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复

C#中Timer定时器的使用示例

关于C#中timer类 在C#里关于定时器类就有3个: 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的.它的主要缺点是计时不精确,而且必须有消息循环,Console Applic

asp.net中Timer定时器在web中无刷新的使用

最近在做一个项目的时候,web端的数据需要与数据源进行实时同步,并保证数据的准确性,当时,考虑到使用ajax异步刷新技术.但后来在网上查找相关资料时,发现这样做,太浪费资源了,因为ajax的提交请求不应该这么频繁的,只适用于那种手动请求响应的那种,因此这种办法是行不通了,后来,发现asp.net中有一个定时器Timer,可以进行实时同步数据,因此本人就做了一个小小的测试,发现还挺好用的,于是乎就有了下文.如下: aspx页面中的代码: <form id="form1" runat

C# Timer 定时器应用

关于C#中timer类 在C#里关于定时器类就有3个: 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的.它的主要缺点是计时不精确,而且必须有消息循环,Console Applic

JAVA Timer定时器使用方法

JAVA  Timer 定时器测试 MyTask.java:package com.timer; import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimerTask; public class MyTask extends TimerTask{        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")