This may have been obvious to others but ...
I have misunderstood one of the basic concepts of C#: reference types and pass by value.
I know that this is explained in the elementary C# texts but I made an assumption about pass by value and ignored the rest.
When reference types are passed to methods "by value" only the handle is passed by value. The handle references the object out on the stack. The called method is free to modify the object at least via the normal public methods and properties. Makes sense, I guess. But I was confused by the last Chris Sells multithreading in winforms article.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms01232003.asp
Any way, me dumb but learning.