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()