Why must UI elements always be created/updated from the UI thread?
In (almost?) all programming languages UI elements may be safely accessed/modified only from the UI thread. I understand that it’s a standard concurrent access and synchronization problem, but is it really necessary? Is this behaviour imposed by the programming languages or by the operating system? Are there any programming languages where this situation is different?
It’s imposed by the graphics framework – which is often (but not always) supplied by the operating system.
Basically, making everything “properly threadsafe” is inefficient. While it’s certainly a pain to have to marshal calls back to the UI thread, it allows the UI thread itself to process events extremely quickly without having to worry about locking etc.