littleguru said:

I don't like the current way either and therefore implemented a small class to help me out: http://www.liensberger.it/web/blog/?p=90 - I hope that helps you guys too.

The approach could be modified to use extension methods, but I didn't do that to keep it compilable for the C# 2.0 compiler.

Hmm... why would you bother to do that when Invoke/InvokeRequired are bugged in all kinds of ways? What's wrong with using BackgroundWorker or SynchronizationContext?