public void Start()
        {
            if (_isRunning)
            {
                throw new InvalidOperationException("Already started.");
            }
            _isRunning = true;

            _stageInterrupt.Reset();

            Task.Run(async() =>
            {
                await ContactTracker();

                using (var pipelineScope = _parentContainer.CreateScope())
                {
                    _pipeline = _pipelineFactory.CreatePipeline(pipelineScope.ServiceProvider, ApplicationProtocol);
                    _pipeline.Run(_stageInterrupt, _progress);
                }
            });
        }