C# 定时器Timer的实例介绍


本文摘自PHP中文网,作者零下一度,侵删。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

static void Main(string[] args)

        {

            #region  定时器

            TimerDemo td = new TimerDemo("TimerDemo", 1000);

            td.Enabled = true;

            td.TickEvent += TestHandler;

            Thread timer = new Thread(td.Run);

            timer.Start();

            #endregion

            Console.ReadLine();

        }

 

        /// <summary>

        /// 测试用事件

        /// </summary>

        static void TestHandler()

        {

            Console.WriteLine(DateTime.Now.ToLongTimeString());

        }

  

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

public class TimerDemo

     

    {

        //线程名

        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 TimerDemo(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;

                    }

                }

            }

        }

    }

  

以上就是C# 定时器Timer的实例介绍的详细内容!

相关阅读 >>

比较.net中接口与类的区别

c#/.net易错的几点

.net中抽象类实现多态

.net添加时间戳防止重放攻击

c#高级编程(一)-.net体系结构

.net winform实现在listview中添加progressbar的方法

c#中引用类型之特例string的详细介绍

.net中core使用socket与树莓派进行通信的实例分析(图文)

解析.net垃圾回收(gc)原理

.net core创建一个控制台(console)程序

更多相关阅读请进入《csharp》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...