Why is this necessary? Can't `HasConsoleWindow` just return null or false?

Since this will only be called once it seems unnecessary to cache the value and adds complexity. You might even be better off merging  the method that returns a progress bar with the logic in `HasConsoleWindow`