In my experience, UIs are always required to be single-threaded. The locking needed to make
multi-threaded UIs work will tend to kill any speed advantage. Now some time-consuming
operations maybe ought to be done asynchronously so the UI thread doesn't have to wait for
them. But that's easier said than done. I suspect that the problem you're seeing (and which I
to avoid that, without introducing potential for deadlocks.