public CodeFlowService(
            string authorWatch,
            string secondAuthorWatch,
            int refreshInterval,
            int announceInterval,
            RawPublishEvent publishEvent,
            TraceEvent traceEvent)
        {
            this.authorWatch = authorWatch;
            this.secondAuthorWatch = secondAuthorWatch;
            this.refreshInterval = refreshInterval;
            this.announceInterval = announceInterval;
            this.publishEvent = publishEvent;
            this.traceEvent = traceEvent;
            this.codeFlowRefreshThread = new Thread(this.RunRefresh) { IsBackground = true };

            this.traceEvent.Publish(new TraceMessage { Owner = "CodeFlow", Message = "Ready" });
        }
        public TfsClientService(
            string projectCollectionUrl, 
            string projectName, 
            IEnumerable<string> serverCountQueries, 
            int refreshInterval,
            int nextInterval,
            RawPublishEvent publishEvent, 
            TraceEvent traceEvent)
        {
            this.projectCollectionUrl = projectCollectionUrl;
            this.projectName = projectName;
            this.serverCountQueries = serverCountQueries;
            this.refreshInterval = refreshInterval;
            this.nextInterval = nextInterval;
            this.publishEvent = publishEvent;
            this.traceEvent = traceEvent;
            this.tfsClientRefreshThread = new Thread(this.RunTfsClientRefresh) { IsBackground = true };

            this.traceEvent.Publish(new TraceMessage { Owner = "TfsClient", Message = string.Format("Project collection url: {0}, Project name: {1}", projectCollectionUrl, projectName) });

            this.traceEvent.Publish(new TraceMessage { Owner = "TfsClient", Message = "Ready" });
        }