public partial class Clock : Label, IDisposable { System.Timers.Timer m_UpdateTimer = new System.Timers.Timer(); public System.Timers.Timer UpdateTimer { get { return m_UpdateTimer; } } public Clock() { this.TimeUpdate(); this.UpdateTimer.AutoReset = true; // repeat... this.UpdateTimer.Interval = 200; // update very 200ms... could be slower like 500 or 1000ms... this.UpdateTimer.Elapsed += new System.Timers.ElapsedEventHandler(UpdateTimer_Elapsed); this.UpdateTimer.Start(); } void UpdateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { this.TimeUpdate(); } protected virtual void TimeUpdate() { this.Text = DateTime.Now.ToShortTimeString(); } void IDisposable.Dispose() { this.UpdateTimer.Stop(); } }