public void execute()
        {
            var currentTime = DateTime.Now.Second;

            if (!started)
            {
                started   = true;
                startTime = currentTime;
                engine.addCommand(this);
            }
            else if ((currentTime - startTime) * MS < sleepTime)
            {
                engine.addCommand(this);
            }
            else
            {
                engine.addCommand(subCommand);
            }
        }
        static void Main(string[] args)
        {
            Command wakeup       = new WakeUpCommand();
            var     e            = new ActiveObjectEngine();
            Command sleepCommand = new SleepCommand(1000, e, wakeup);

            e.addCommand(sleepCommand);
            long start = DateTime.Now.Second;

            e.run();
            long end       = DateTime.Now.Second;
            long sleepTime = end - start;

            Console.WriteLine($"SleepTime is {sleepTime}");
        }