栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

C#Timer--定时器类的简单使用

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#Timer--定时器类的简单使用

C#Timer--定时器类的简单使用
  • System.Timers.Timer
  • 定时器简单使用
    • 设置初始属性
      • 初始化定时器间隔多少时间执行
      • 设置执行的事件--Elapsed
      • 设置是否重复执行--AutoReset
      • 设置是否触发Elapsed事件--Enabled
    • 简单示例--借用官方示例
      • 结果

System.Timers.Timer

定时器就是经过固定时间,执行固定任务。

定时器简单使用 设置初始属性 初始化定时器间隔多少时间执行

System.Timers.Timer timer = new System.Timers.Timer(double interval);
interval是毫秒数。比如最后的毫秒数设为1000就是一秒。
也可以用无参构造函数创建后,用对象.interval设置。

设置执行的事件–Elapsed

timer.Elapsed += 需要方法名称。
经过上面设置好的毫秒后,执行事件。比如我要在指定时间内执行方法MyMethod,使用该参数Elapsed进行指定。timer.Elapsed += MyMethod。

该方法有且仅有两个参数MyMethod(Object source, ElapsedEventArgs e) ,且返回值为void。 其中的ElapsedEventArgs 是给Elapsed事件提供数据的对象。
当然了,你还可以再MyMethod中调用其他的方法。

设置是否重复执行–AutoReset

该参数的值类型为bool,默认为false。
如果为false,该定时器只会在第一次经过指定时间执行一次Elapsed方法,后续再经过指定时间间隔就不再执行。

如果为true则每经过时间间隔就执行一次该方法

设置是否触发Elapsed事件–Enabled

该参数的值类型为bool,默认为false。
如果为false,就算经过指定事件也不触发Elapsed事件
若为true,经过指定时间,执行Elapsed事件

简单示例–借用官方示例
using System;
using System.Timers;

public class TimerTest
{
    //定义定时器
    private static System.Timers.Timer aTimer;

    public static void Main()
    {
        //初始化定时器属性
        SetTimer();

        Console.WriteLine("n键盘输入即可退出...n");
        Console.WriteLine("定时器开始于 {0:HH:mm:ss.fff}", DateTime.Now);
        Console.ReadLine();//保持程序持续运行
        aTimer.Stop();//停止定时器
        Console.WriteLine("n停止定时器...n");
        aTimer.Dispose();//释放资源
        Console.WriteLine("退出...");
        Console.ReadLine();
    }

    private static void SetTimer()
    {
        Console.WriteLine("初始化当前的定时器");
        // 创建一个两秒一次的定时器
        aTimer = new System.Timers.Timer(2000);
        // 设置事件
        aTimer.Elapsed += MyMethod;
        aTimer.AutoReset = true;
        aTimer.Enabled = true;
        Console.WriteLine("设置完毕");
    }


    public static void A()
    {
        //在这里写真正的操作
        Console.WriteLine("我定时执行的操作A");
    }


    private static void MyMethod(Object source , ElapsedEventArgs e)
    {
        //我真正需要执行的操作
        Console.WriteLine("当前时间 {0:HH:mm:ss.fff}", DateTime.Now);
        Console.WriteLine("ElapsedEventArgs携带的数据 {0:HH:mm:ss.fff}", e.SignalTime);
        A();
    }
}
结果

官方文档在这里

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号