C#中四种定时器的用法详解

 更新时间:2024年04月17日 10:27:27   作者:※※冰馨※※  
日常项目开发中,很多时候都需要用到定时器来处理一些问题,那么c#中各种定时器应该怎么用呢?下面来简单介绍下C#中4种定时器的使用方法说明,感兴趣的朋友可以参考下

C#四种定时器的用法

  • 1. System.Windows.Forms.Timer
  • 2. System.Threading.Timer
  • 3. System.Timers.Timer
  • 4. System.Windows.Threading.DispatcherTimer(WPF中的定时器)

1. System.Windows.Forms.Timer

使用方法如下:

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();//创建定时器
timer.Tick += new EventHandler(timer1_Tick);//事件处理
timer.Enabled = true;//设置启用定时器
timer.Interval = 1000;//执行时间
timer.Start();//开启定时器
/// <summary> 
/// 定时器事件处理 
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param> 
private void timer1_Tick(object sender, EventArgs e)
{
      timer.Stop();//停止定时器
      timer.Tick -= new EventHandler(timer1_Tick);//取消事件
      timer.Enabled = false;//设置禁用定时器
}

2. System.Threading.Timer

使用方法如下:

System.Threading.Timer timer;
timer = new System.Threading.Timer(new TimerCallback(timerCall), this, 3000, 0);//创建定时器
/// <summary>
/// 事件处理
/// </summary>
/// <param name="obj"></param> 
 
private void timerCall(object obj) 
{
      timer.Dispose();//释放定时器
} 

3. System.Timers.Timer

使用方法如下:

System.Timers.Timer timer = new System.Timers.Timer(1000);//创建定时器,设置间隔时间为1000毫秒;
timer.Elapsed += new System.Timers.ElapsedEventHandler(theout);  //到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); 
timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它,
timer.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
 
/// <summary>
///执行事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public void theout(object source, System.Timers.ElapsedEventArgs e)
{ 
      timer.Elapsed -= new System.Timers.ElapsedEventHandler(theout);  //取消执行事件;  
      timer.Enabled = false;//禁用 
      timer.Stop();//停止
}

4. System.Windows.Threading.DispatcherTimer(WPF中的定时器)

使用方法如下:

private static System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();//创建定时器
timer.Tick += new EventHandler(timer_out);//执行事件
timer.Interval = new TimeSpan(0, 0, 0, 1);//1s执行
timer.IsEnabled = true;//启用
timer.Start();//开启
 
/// <summary>
///执行事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public static void timer_out(object sender, EventArgs e)
{
     timer.Tick -= new EventHandler(timer_out);//取消执行事件;   
     timer.IsEnabled = false;//禁用 
     timer.Stop();//停止
}

注意事项

  • 1.DispatcherTimer是运行在UI线程上的,其好处是可以在定时事件中修改UI元素,其它三种定时器是运行在独立的线程上的,与UI线程无关。
  • 2.如果需要修改UI控件,则必须委托给调度器this.Dispatcher进行,不然的话会提示界面资源被其他线程所拥有而无法更新界面。

以上就是C#中四种定时器的用法详解的详细内容,更多关于C#定时器用法的资料请关注脚本之家其它相关文章!

相关文章

  • Unity实现ScrollView滑动吸附功能

    Unity实现ScrollView滑动吸附功能

    这篇文章主要为大家详细介绍了Unity实现ScrollView滑动吸附功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • C#使用StreamReader读取文件的方法

    C#使用StreamReader读取文件的方法

    这篇文章主要介绍了C#使用StreamReader读取文件的方法,涉及C#文件操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • c#将list类型转换成DataTable方法示例

    c#将list类型转换成DataTable方法示例

    将List类型转换成DataTable的通用方法,大家参考使用吧
    2013-12-12
  • 实例讲解C# 泛型(Generic)

    实例讲解C# 泛型(Generic)

    这篇文章主要介绍了C# 泛型(Generic)的的相关资料,文中示例代码非常详细,帮助大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C# UDP网络通信的实现示例

    C# UDP网络通信的实现示例

    UDP协议是互联网上使用最广泛的传输协议之一,具有简单、高效和不可靠的特点,本文主要介绍了C# UDP网络通信的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Unity自定义编辑器界面(Inspector界面)

    Unity自定义编辑器界面(Inspector界面)

    这篇文章主要为大家详细介绍了Unity自定义编辑器界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • C#获取CPU编号的方法

    C#获取CPU编号的方法

    这篇文章主要介绍了C#获取CPU编号的方法,实例分析了C#获取硬件信息的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 雅虎公司C#笔试题(后半部份才是)

    雅虎公司C#笔试题(后半部份才是)

    雅虎公司C#笔试题(后半部份才是)...
    2007-04-04
  • C#函数参数修饰符out和in的用法详解

    C#函数参数修饰符out和in的用法详解

    在 C# 中,out 和 in 是两种非常有用的参数修饰符,它们各自有着独特的用途和优势,能够极大地提升我们的编程体验,或许很多人对这两个修饰符的作用还不太了解,今天就让我们一起来揭开它们神秘的面纱吧
    2025-11-11
  • C#开发WinForm清空DataGridView控件绑定的数据

    C#开发WinForm清空DataGridView控件绑定的数据

    本文详细讲解了C#开发WinForm清空DataGridView控件绑定数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论