public SystemClock()
        {
            int ticks = 0, secs = 0, mins = 0, hours = 0, days = 0;
            var timer    = this.CreateTimer();
            var interval = timer.Delay;

            timer.Tick += delegate {
                ticks += interval;

                Milliseconds?.Invoke(ticks);
                if (ticks >= 1000)
                {
                    ++secs; ticks = 0;
                    Seconds?.Invoke(secs);

                    if (secs == 60)
                    {
                        ++mins; secs = 0;
                        Minutes?.Invoke(mins);

                        if (mins == 60)
                        {
                            ++hours; mins = 0;
                            Hours?.Invoke(hours);

                            if (hours == 24)
                            {
                                ++days; hours = 0;
                                Days?.Invoke(days);
                            }
                        }
                    }
                }
            };
            timer.Start();
        }