ADBaseLibrary.AdobeHDS.FragmentProcessor.ThreadProcessor C# (CSharp) Method

ThreadProcessor() private method

private ThreadProcessor ( CancellationToken token, IProgress progress ) : Task
token System.Threading.CancellationToken
progress IProgress
return Task
        private async Task ThreadProcessor(CancellationToken token, IProgress<double> progress)
        {
            List<Task> FragmentTasks = new List<Task>();
            do
            {
                while (ThreadCount < threads && bootstrap.CurrentFragmentWrite != bootstrap.FragmentCount && !token.IsCancellationRequested)
                {
                    FragmentTasks.Add(DoNextFragment());
                    ThreadCount++;
                }
                Task f=await Task.WhenAny(FragmentTasks);
                await f;
                FragmentTasks.Remove(f);
                progress.Report((double)bootstrap.CurrentFragmentWrite * 100D / (double)bootstrap.FragmentCount);
                ThreadCount--;
            } while (bootstrap.CurrentFragmentWrite != bootstrap.FragmentCount && !token.IsCancellationRequested);
            await CloseFile();
        }
        public async Task DoNextFragment()