I have noticed a following behaviour. Console output messages appear in an incorrect folder when they are populated by IProgress.  

```
var recounter = new IdRecounter(filePath, new Progress<string>(Console.WriteLine));
                recounter.RecalculateIds();

```

I am trying to improve my encapsulation, reusability and design skills.
So, I have a class called IdRecounter. I want to use it in a console app for now, but later on perhaps in a WPF app or whatever.

Therefore, I want the class to be completely unaware of it's environment - but at the same time I want to report progress of action 'live' - therefore, I am using the IProgress type, which will allow me to put stuff into console, or into a log file, or update a status label property etc. (Please let me know if that's not how you do it)

So, I have noticed that it tends to throw messages into console in an incorrect order, e.g.
Processing File 1  

Processing File 4  

Processing File 5  

Processing File 3  

All done!  

Processing File 2  

When I switched IProgress (`MyProgress.Report()`) with `Console.WriteLine()` it works as expected.  

What is the reason of that and how can it be controlled?

Thanks