I am in learning multithreading (and related stuff like concurrency, TPL - in .NET, Windows) and hope that thу answers to this question would significantly reduce the amount of my doubts.
Why WPF UI requires output (from multiple threads) through the Dispatcher while the console does not?
I hope that this explanation will be a little more detailed then the overused and underdefined in MSDN docs phrase that Console class is thread-safe (or better to avoid the use of ambiguous terms at all).
Update:
Thanks to Justin Pihony's comment, sub-question:
Why reading from WPF UI is not possible without a Dispatcher object while Windows Forms permit both reading and writing without Invoke/BeginInvoke?
Why (or how) does reading compromise thread-safedty of WPF UI?
I am trying to disambiguate for me the phrase from Parallel Programming in .NET Framework 4: Getting Started :
"I didn’t have problems with the console application because the Console class is thread safe. But in WPF, UI components can be safely accessed only by a dedicated UI thread"