c#定时器使用示例详解

 更新时间:2014年01月28日 09:58:39   作者:  
这篇文章主要介绍了c#定时器的使用示例,大家参考使用吧

在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 Application(控制台应用程序)无法使用。 

System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

例1:
使用System.Timers.Timer类

复制代码 代码如下:

System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
     MessageBox.Show("OK!");
}


例2:System.Threading.Timer类的TimerCallback 委托

System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高。
只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。当不再需要计时器时,请使用 Dispose 方法释放计时器持有的资源。
使用 TimerCallback 委托指定希望 Timer 执行的方法。计时器委托在构造计时器时指定,并且不能更改。此方法不在创建计时器的线程中执行,而是在系统提供的线程池线程中执行。
创建计时器时,可以指定在第一次执行方法之前等待的时间量(截止时间)以及此后的执行期间等待的时间量(时间周期)。可以使用 Change 方法更改这些值或禁用计时器。
Demo application:
应用场景:在windows form程序自动执行某项工作后,希望其windows form能够自动关闭。

代码设计:

(1)首先声明Timer变量:private System.Threading.Timer timerClose;
(2)在上述自动执行代码后面添加如下Timer实例化代码:

复制代码 代码如下:

// Create a timer thread and start it
timerClose = new System.Threading.Timer(new TimerCallback(timerCall), this, 5000, 0);

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

(3)定义TimerCallback委托要执行的方法:

复制代码 代码如下:

private void timerCall(object obj)
{
      timerClose.Dispose();
      this.Close();
}

当然,除了使用上述System.Threading.Timer类的TimerCallback 委托机制外,应该还有很多其他的办法。另外,这里只是demo了TimerCallback委托的简单应用。

相关文章

  • C#调用WinRar执行rar、zip压缩的方法

    C#调用WinRar执行rar、zip压缩的方法

    这篇文章主要介绍了C#调用WinRar执行rar、zip压缩的方法,涉及C#针对winrar的判断与调用技巧,需要的朋友可以参考下
    2015-05-05
  • C#中关于zip压缩解压帮助类的封装 附源码下载

    C#中关于zip压缩解压帮助类的封装 附源码下载

    之前一个同学问了这个问题后,看了园子里其它园友的封装,都很零碎,调用也不是很方便。所以自己就封装了一个zip解压的类。后来想整理下怕自己忘了。就把压缩的类也一并封装了
    2013-02-02
  • C#异步编程由浅入深(一)

    C#异步编程由浅入深(一)

    这篇文章主要介绍了C#异步编程由浅入深(一),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#特性 匿名类型与隐式类型局部变量使用介绍

    C#特性 匿名类型与隐式类型局部变量使用介绍

    这篇文章主要介绍了C#特性-匿名类型与隐式类型局部变量,需要的朋友可以参考下
    2014-12-12
  • C#实现进制转换

    C#实现进制转换

    这篇文章介绍了C#实现进制转换的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 详解WPF的InkCanvas选择模式

    详解WPF的InkCanvas选择模式

    这篇文章主要介绍了WPF InkCanvas选择模式的相关资料,帮助大家更好的理解和学习使用c# wpf,感兴趣的朋友可以了解下
    2021-04-04
  • C#实现虚拟键盘的实例详解

    C#实现虚拟键盘的实例详解

    这篇文章主要为大家详细介绍了如何利用C#实现虚拟键盘,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • 浅谈C#中简单的异常引发与处理操作

    浅谈C#中简单的异常引发与处理操作

    这篇文章主要介绍了C#中简单的异常引发与处理操作,讲到了Exception类和try...catch及throw语句的基本使用,需要的朋友可以参考下
    2016-02-02
  • c++指针使用形参改变实参的方法

    c++指针使用形参改变实参的方法

    下面小编就为大家带来一篇c++指针使用形参改变实参的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • C# 中AutoMapper的使用方法

    C# 中AutoMapper的使用方法

    这篇文章主要介绍了C# 中AutoMapper的使用方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12

最新评论