Introduction
The computer world is going through a revolution in terms of the way code is written. From (mostly) single CPU systems, current computers have multi-core processors, capable of performing concurrent operations. The shift is mostly due to hardware limitations that don't allow current technology to increase CPU clock frequency by much (if at all). The solution: create more cores.
But, more cores means the "free lunch is over" (as Herb Sutter put it nicely). If we continue writing single threaded code, no amount of cores can help us speed things up. A lot of effort is now going in to getting back "the free lunch". One such effort is the Task Parallel Library introduced in .NET 4.
The UI world remains mainly single threaded. What concerns a UI framework, such as WPF, is keeping the UI responsive, which means offloading any significant work or significant wait to some background thread in some way so that the UI thread can keep pumping messages, keeping the application responsive....