博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delegate Demo (一个关于System.Timers.Timer的Demo)
阅读量:5766 次
发布时间:2019-06-18

本文共 2715 字,大约阅读时间需要 9 分钟。

namespace Delegates{    partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            clock = new Clock(digital);        }        private void start_Click(object sender, System.EventArgs e)        {            this.clock.Start();        }        private void stop_Click(object sender, System.EventArgs e)        {            this.clock.Stop();        }        private Clock clock;    }}

Clock.cs类的内容

namespace Delegates{    using System.Windows.Forms;    class Clock    {        public Clock(TextBox displayBox)        {            this.display = displayBox;        }        public void Start()        {            pulsed.Add(this.RefreshTime);        }        public void Stop()        {            pulsed.Remove(this.RefreshTime);        }        private delegate void InvokeCallback(string msg);        private void RefreshTime(int hh, int mm, int ss)        {            if (!this.display.InvokeRequired)            {                this.display.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", hh, mm, ss);            }            else            {                InvokeCallback msgCallback = new InvokeCallback(DisplayText);                display.Invoke(msgCallback, new object[] { string.Format("{0:D2}:{1:D2}:{2:D2}", hh, mm, ss) });            }        }        private void DisplayText(string text)        {            this.display.Text = text;        }        private Ticker pulsed = new Ticker();        private TextBox display;    }}

 

namespace Delegates{    using System.Collections;    using System.Timers;    using System.Windows.Forms;    class Ticker    {        public delegate void Tick(int hh, int mm, int ss);        public Ticker()        {            this.ticking.Elapsed += new ElapsedEventHandler(this.OnTimedEvent);            this.ticking.Interval = 1000; // 1 second            this.ticking.Enabled = true;        }        public void Add(Tick newMethod)        {            this.tickers += newMethod;        }        public void Remove(Tick oldMethod)        {            this.tickers -= oldMethod;        }        private void Notify(int hours, int minutes, int seconds)        {            if (this.tickers != null)            {                this.tickers(hours, minutes, seconds);            }        }        private void OnTimedEvent(object source, ElapsedEventArgs args)        {            int hh = args.SignalTime.Hour;            int mm = args.SignalTime.Minute;            int ss = args.SignalTime.Second;            Notify(hh, mm, ss);        }        private Tick tickers;        private System.Timers.Timer ticking = new System.Timers.Timer();    }}

 

Ticker.cs类的内容

 

转载于:https://www.cnblogs.com/mishy/archive/2013/04/25/3042642.html

你可能感兴趣的文章
Linux下DHCP服务器配置
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
mybatis学习笔记之学习目录(1)
查看>>
我的IDEA配置
查看>>
myeclipse显示行号
查看>>
编写高性能的java程序
查看>>
C# 文件操作封装类(删除,移动,复制,重命名)
查看>>
Spring 的配置详解
查看>>
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
计蒜客 墙壁涂色
查看>>
C语言的inline
查看>>
Web模板引擎—Mustache
查看>>
喷水装置(一)NYOJ6
查看>>
学习进度条
查看>>
【BZOJ】1588: [HNOI2002]营业额统计
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
hystrix实战之javanica
查看>>
bs4取数
查看>>