The RegEx runtime perf was never anything noticeable - it was the startup time that was eating over a third of time during initialization.
This shaves 200ms off the startup time.
These methods don't require a string.format call so we'll directly call the Render method without a call to string.format.
Added bonus of a a couple fewer allocations too.
Makes the Report method an explicit implementation to allow for better interoperability with standard .NET progress functionality while keeping backwards compatibility with existing ProgressTask functionality.
Closes#285
Previous behavior was that the only way to get a task to a finished state was to artificially set the Value to MaxValue.
With this change StopTask() will also complete the task with the change that a task cannot be restarted.
In both of these loops context is captured preventing caching of the lambda. this results in a pretty significant amount of allocations especially with progress bars that constantly are remeasuring
R# and Rider have quite a bit of noise related to documentation in the testing projects so this disables those warnings.
In the main projects, R# and Rider complain loudly about the namespaces not matching the file structure. The DotSettings file disables that warning.
Once you get rid of that noise there are quite a few opportunities for trimming out redundant code that R# points out especially with the nullable support enabled, plus there are some bugs related to multiple enumerations worth looking into I think.