Added progress tracker.
Reduce calls to cancellationToken.ThrowIfCancellationRequested();
Update unit test to include random list of char