Have I missed something with WPF (and Windows Forms before it) in regards to the need to write a lot of repetitive code when developing multi-threaded applications. Every UI
Don't forget lambdas:
int myParam = 5; Dispatcher.BeginInvoke((Action)(() => SomeMethod(myParam)));
There is also a hidden intellisense method on the dispatcher:
if(Dispatcher.CheckAccess()) DoSomething();