public CommandHandler(ILogger logger, IThreadWatcher threadWatcher, IDownloader downloader)
        {
            _logger        = logger;
            _threadWatcher = threadWatcher;
            _downloader    = downloader;

            _commandMap = new Dictionary <char, Action <string> >();
        }
        public DogRepository(IMemoryCache memoryCache, IDogService dogService, IThreadWatcher threadWatcher)
        {
            MemoryCache   = memoryCache;
            DogService    = dogService;
            ThreadWatcher = threadWatcher;

            MemoryCacheEntryOptions = new MemoryCacheEntryOptions()
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(10)
            };

            ThreadStartedEvent  += OnThreadStartedEvent;
            ThreadFinishedEvent += OnThreadFinishedEvent;
        }