How can I implement two ui threads in a C# windows application?
This might not be an answer but more of an explanation.
If two threads were allowed to access the same pixel at the same time - something that would be a consequence of having a multithreaded UI - you would need some sort of synchronization between the threads. If the threads didn't synchronize how should the color of a pixel be determined?
So we would have to add locking. Locking per pixel is very costly so we'd soon move to locking per control or per window. There you go: by allowing 1 and only 1 thread to access the UI we've implemented locking.
BTW: replace pixel with control or controltree; it isn't just about pixels it is about shared data whether that be a pixel or a control.