ryanmolden
Joined 15 years ago
Joined 15 years ago
Converting off of STA in legacy code is extremely difficult due to the transitive nature of it as well as the fact you likely have very large and complex types which were never written to be thread-safe because the STA protected them from that (let's not talk about re-entrancy though :)).
It is getting better since managed code has MTA semantics by default, but even with async code all it takes is one person calling Wait on a Task on the UI thread...
A huge sync API surface that is publicly callable also doesn't help. Even if you want to make things async under the covers you generally can't since callers are expecting synchronous semantics and there is no (good) way to make work async, present a sync calling surface to callers, and not block the UI thread (if you say nested message pump, you lose :P)
I can type { and } on a Swiss keyboard which is a AltGr + ä and AltGr + $.
What keyboard layout were you seeing issues with? Looking at Wikipedia it looks like it would be South Slavic Latin based on your mention of Alt Gr+N?
You can mail me privately if you wish (mail in profile).
Another possible cause can be extensions. Not that VS doesn't have its own problems of 'doing too much work on the UI thread', but there are TONS of callback points that third parties can hook into, and lots of times people do very ill-advised things on the UI thread, leading to poor responsiveness.
We monitor it actively (via PerfWatson[0], you should install it if you want your perf problems brought to the attention of Microsoft, it should have low overhead at runtime, only kicking in when the UI thread is already unresponsive), but of course with a product as large and complex as VS, and with said product being extensible, inevitably customers run into stuff we never see internally, so we rely on getting repros/data from them to understand what is going wrong.
[0] http://visualstudiogallery.msdn.microsoft.com/fa85b17d-3df2-...
Contact: [email protected]
Github: http://github.com/ryanmolden (not a lot there at the moment. One day I will post a number of other things I am/have been working on...one day).
[ my public key: https://keybase.io/ryanmolden; my proof: https://keybase.io/ryanmolden/sigs/BoeDiGIsYjXrgN3zOnFHi_fWb_qC3OEeGQNCGmeeHuY ]