gpt4 book ai didi

C#自定义基于控制台的Timer实例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C#自定义基于控制台的Timer实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了C#自定义基于控制台的Timer实现方法。分享给大家供大家参考。具体如下:

1、概述 。

这里实现了一个自定义类TimerTest,该类可以模拟一个Timer,经过指定时间间隔执行某个事件.

2、TimerTest类 。

?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//定时器类
class TimerTest
{
  //线程名
  string _ThreadName;
  public string ThreadName
  {
   get { return _ThreadName; }
   private set { _ThreadName = value; }
  }
  //时间间隔
  int _TimeInterval;
  public int TimeInterval
  {
   get { return _TimeInterval; }
   set { _TimeInterval = value; }
  }
  //当前计时器是否启用 true:启用 false:不启用
  bool _Enabled;
  public bool Enabled
  {
   get { return _Enabled; }
   set { _Enabled = value; }
  }
  //每隔一段时间需要运行的事件
  public delegate void TickEventHandler();
  public event TickEventHandler TickEvent;
  /// <summary>
  /// 建立一个计时器(构造函数)
  /// </summary>
  /// <param name="ThreadName">线程名</param>
  /// <param name="TimeInterval">时间间隔</param>
  public TimerTest( string ThreadName, int TimeInterval = int .MaxValue)
  {
   this .ThreadName = ThreadName;
   this .TimeInterval = TimeInterval;
   this .Enabled = false ;
  }
  /// <summary>
  /// 定期执行事件
  /// </summary>
  public void Run()
  {
   while ( true )
   {
    //如果当前计时器并未启用,则每隔一段时间检测是否被启用
    if (! this .Enabled)
    {
     Thread.Sleep(100);
     continue ;
    }
    //触发事件TickEvent
    if (TickEvent != null )
    {
     TickEvent();
    }
    //休眠一定的时间,等待下一个循环
    Thread.Sleep(TimeInterval % 100);
    for ( int temp = 0; temp < TimeInterval / 100; temp++)
    {
     Thread.Sleep(100);
     if (! this .Enabled)
     {
      break ;
     }
    }
   }
  }
}

3、调用示例 。

每1000毫秒输出当前的时间 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// 测试用事件
/// </summary>
static void TestHandler()
{
  //TODO
  Console.WriteLine(DateTime.Now.ToLongTimeString());
}
static void Main( string [] args)
{
  TimerTest tt = new TimerTest( "timer_test" , 1000);
  tt.Enabled = true ;
  tt.TickEvent += TestHandler;
  Thread timer = new Thread(tt.Run);
  timer.Start();
  Console.ReadLine();
}

4、运行结果 。

C#自定义基于控制台的Timer实例

希望本文所述对大家的C#程序设计有所帮助.

最后此篇关于C#自定义基于控制台的Timer实例的文章就讲到这里了,如果你想了解更多关于C#自定义基于控制台的Timer实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com