1. May not be what a consumer intends. 2. May actually lead to deadlock.
I believe that was the route WPF was originally taking, and they abandoned it.
Edit: Looked it up, and I'm wrong. Avalon originally used an entirely different concept: the UIContext. This wasn't much different from the way things work today (which is the way they work in practically all UI libraries), it was just much
more abstracted with a "Monitor" type of interface.
I think it's entirely based on performance. Perhaps the Win32 limitation impose a too heavy a performance penalty on automatic synch... but how is Silverlight able to do it?
Deadlock is only a possibility when you try to take out locks while already holding locks, right? It's too bad that even until now (for the exception of Silverlight), we still don't have a good solution for this problem.