C#中的三种定时计时器Timer用法介绍

下面我将为你详细讲解C#中的三种定时计时器Timer用法介绍的完整攻略。

1. 定时器Timer是什么?

定时器是一种常见的应用场景,比如日常使用的Android/IOS系统中的闹钟提醒功能、计数器功能等都需要定时器的支持。而在C#中,我们也可以使用定时器来实现某些需要定时执行的任务。

2. C#中的三种定时计时器Timer用法介绍

C#中,提供了三种常见的定时器Timer用法,分别是System.Threading.TimerSystem.Timers.TimerSystem.Windows.Forms.Timer。这三个定时器的用法都很类似,下面我们将分别详细介绍这三种定时器的使用方法。

2.1 System.Threading.Timer

System.Threading.Timer是一种基于线程池的计时器,它可以在指定的时间间隔执行指定的方法。

下面是一个示例代码:

using System;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        TimerCallback tcb = new TimerCallback(PrintTime);//创建TimerCallback委托,指向PrintTime方法
        Timer timer = new Timer(tcb, null, 0, 1000);//创建定时器,时间间隔为1000ms
        Console.ReadLine();//阻塞主线程,以保证定时器一直运行
    }

    private static void PrintTime(object state)
    {
        Console.WriteLine("当前时间: " + DateTime.Now);
    }
}

在这段代码中,我们首先创建了一个TimerCallback委托类型的变量tcb,并将其指向一个方法PrintTime。然后,我们使用tcb来创建一个Timer对象,使其每隔1秒钟执行一次tcb所指向的PrintTime方法。

需要注意的是,在使用System.Threading.Timer时,可以指定一个可选的对象来作为第二个参数。这个对象会被传入PrintTime方法中,可以在该方法中进行一些操作。

2.2 System.Timers.Timer

System.Timers.Timer是一种基于事件的计时器,它也可以在指定的时间间隔执行指定的方法。

下面是一个示例代码:

using System;
using System.Timers;

class Program
{
    static void Main(string[] args)
    {
        Timer timer = new Timer();
        timer.Interval = 1000;
        timer.Elapsed += PrintTime;//为Timer对象绑定Elapsed事件和PrintTime方法
        timer.Start();
        Console.ReadLine();
    }

    private static void PrintTime(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("当前时间: " + DateTime.Now);
    }
}

在这段代码中,我们创建了一个System.Timers.Timer对象timer,并设置了它的时间间隔为1000ms。然后,我们为timer对象绑定了一个Elapsed事件,并将其指向一个方法PrintTime,以便在每个1秒钟的时间间隔内执行该方法。

需要注意的是,在使用System.Timers.Timer时,事件处理程序方法必须有两个参数:object类型的source参数和ElapsedEventArgs类型的e参数。

2.3 System.Windows.Forms.Timer

System.Windows.Forms.Timer是一种基于Windows消息机制的计时器,它可以在指定的时间间隔执行指定的方法。

下面是一个示例代码:

using System;
using System.Windows.Forms;

class Program
{
    static void Main(string[] args)
    {
        Timer timer = new Timer();
        timer.Interval = 1000;
        timer.Tick += new EventHandler(PrintTime);//为Timer对象绑定Tick事件和PrintTime方法
        timer.Start();
        Application.Run();//阻塞主线程,以保证定时器一直运行
    }

    private static void PrintTime(object sender, EventArgs e)
    {
        Console.WriteLine("当前时间: " + DateTime.Now);
    }
}

在这段代码中,我们创建了一个System.Windows.Forms.Timer对象timer,并设置了它的时间间隔为1000ms。然后,我们为timer对象绑定了一个Tick事件,并将其指向一个方法PrintTime,以便在每个1秒钟的时间间隔内执行该方法。

需要注意的是,在使用System.Windows.Forms.Timer时,事件处理程序方法必须有两个参数:object类型的sender参数和EventArgs类型的e参数。

3. 总结

以上就是C#中的三种定时计时器Timer用法介绍的完整攻略,通过使用这三种定时器,我们可以轻松实现定时任务,并可以根据自己的需求选择适合自己的定时器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的三种定时计时器Timer用法介绍 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 在Asp.net core中实现websocket通信

    在ASP.NET Core中实现WebSocket通信的完整攻略如下: 步骤一:创建ASP.NET Core Web应用程序 首先,我们需要创建一个ASP.NET Core Web应用程序。可以使用Visual Studio或者命令行工具创建一个新的ASP.NET Core Web应用程序。 步骤二:添加WebSocket中间件 在ASP.NET Core中…

    C# 2023年5月17日
    00
  • Redis缓存,泛型集合与json字符串的相互转换实例

    Redis缓存、泛型集合与json字符串的相互转换 在使用 Redis 做缓存时,经常需要将对象转为 json 格式,以便存储到 Redis 中,或者从 Redis 中读取出来时,将 json 转为对象。在 Java 中,可以使用泛型集合来方便的表示对象集合,再使用相关库来实现对象和 json 字符串之间的相互转化。 下面介绍一个 Redis 缓存、泛型集合…

    C# 2023年5月31日
    00
  • C#将HashTable中键列表或值列表复制到一维数组的方法

    要将HashTable中的键列表或值列表复制到一维数组中,可以使用CopyKeys()或CopyValues()方法。这两个方法返回一个数组,该数组包含Hash表中所有键或值。 具体步骤如下: 1. 创建一个HashTable对象并赋值 // 创建一个HashTable对象 Hashtable ht = new Hashtable(); // 赋值 ht.A…

    C# 2023年6月7日
    00
  • C#表达式树Expression动态创建表达式

    本文将会介绍C#表达式树(Expression)动态创建表达式的完整攻略,包括表达式树的基本概念、表达式树的创建、表达式树的编译以及完整的示例说明。 表达式树的基本概念 表达式树是一个由操作符和操作数组成的树状结构,是一种可以在运行时动态创建表达式的机制。在C#中,表达式树是由Expression命名空间中的类和枚举所组成,它们提供了创建和操作表达式树的方法…

    C# 2023年5月31日
    00
  • C# 实例化接口对象的方法

    C#中实例化接口对象的方法有两种:使用类实现接口和使用匿名类型实现接口。 使用类实现接口 定义一个接口 public interface IExampleInterface { void ExampleMethod1(); void ExampleMethod2(string exampleArg); } 创建实现该接口的类 public class Exa…

    C# 2023年6月1日
    00
  • 2016主流编程语言的详细对比

    2016主流编程语言的详细对比攻略 介绍 不同的编程语言在不同的场合具有不同的特点。因此,为了在选择编程语言时不至于盲目,有必要对不同的编程语言进行对比。本文将介绍2016年主流编程语言的详细对比,帮助读者快速了解不同编程语言的优劣,选择最适合的编程语言。 对比内容 本文将对2016年主流编程语言进行以下方面的对比: 语言特点:介绍编程语言的基本特性,如编译…

    C# 2023年6月7日
    00
  • C#如何调用MFC 窗口 DLL

    调用 MFC 窗口 DLL 是一个比较常见的需求,我们可以通过以下步骤实现: 1. 创建 MFC 窗口 DLL 项目 创建一个 MFC DLL 项目,并将其设置为创建 MFC 静态链接库。在项目中添加一个 MFC 窗口类,这将为我们提供一个调用的窗口。 2. 导出并编译 DLL 在窗口类头文件中声明一个新的公共函数,并在类源文件中将其实现。这样就可以在其他应…

    C# 2023年5月14日
    00
  • JQueryEasyUI datagrid框架的基本使用

    下面是针对JQueryEasyUI datagrid框架基本使用的完整攻略: 介绍 JQueryEasyUI datagrid是基于JQuery的UI插件。它提供了易于使用、可定制和高性能的数据表格功能,适合用于数据展示、数据查询、数据编辑等场合。操作方式类似于Excel表格,支持排序、筛选、分页等功能。本攻略将介绍JQueryEasyUI datagrid…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部