Control.Invoke executes the specified delegate on the thread that owns the control's underlying window handle.
For years I have just accepted that this is the way it has to be, but I have never understood why.
The only thing I can think of is that the code is terribly thread unsafe, and instead of just adding a little synchronization in the control code, the framework just dissallows it and forces us down this route - throwing the baby out with the bath water!
Is it sheer Microsoft laziness, or is there something Im just not getting?
Do other programming frameworks / other OSes have similar problems or is it just a Windows thing?
Is there any way around it other than changing every function in our app?