Используйте отладчик.Debug + Break All, когда вы замечаете, что это блокирует.Затем Debug + Windows + Threads и выберите основной поток.Окно стека вызовов показывает вам, что он делает.
Угловой случай, когда эти плагины используют много вызовов Control.Begin / Invoke или Dispatcher.Begin / Invoke.В этом случае ваш поток пользовательского интерфейса не блокируется, он просто перегружен запросами на отправку целей делегата.И больше не может выполнять свои обычные обязанности, такие как перекраска окон и реагирование на события мыши и клавиатуры.С этим мало что можно сделать, кроме как работать с авторами плагинов, чтобы заставить их исправиться.
У вас уже есть поток пользовательского интерфейса, который создал первое окно.Создание дополнительных потоков, которые имеют свои собственные окна, возможно, но вызывает неразрешимые проблемы с Z-порядком окон (окно исчезнет под окном другого приложения) и щедрыми подсказками о потере многопоточности взаимодействия окон.