private async Task RunNextWorkerAsync(ISyncWorker worker)
        {
            _logger.LogTrace($"Uploading file: {worker.FilePath}");

            //subscribe to worker for progress event
            var currentProgressPrinter = new ProgressPrinter();

            worker.ProgressEvent += (job, item) =>
            {
                currentProgressPrinter.PrintProgress(job);
            };

            _logger.LogTrace($"Starting upload process: {worker.FilePath}");

            //start background task
            await worker.RunAsync(_cts.Token);

            // no need to retian chunk hashes upon completion
            worker.State?.ChunkHashes.Clear();

            _logger.LogTrace($"Finished upload process: {worker.FilePath}");
        }
        public override void OnCreate()
        {
            base.OnCreate();

            syncWorker = FactorySingleton.Factory.Get <ISyncWorker>();
        }