Я собирался предложить просмотреть ваш графический интерфейс, чтобы определить любые пользовательские или сторонние компоненты, которые содержат много подкомпонентов или которые имеют какой-либо необычный или неэффективный метод для повторной проверки себя.Похоже, что так и было, так как вы упомянули, что средство выбора даты было серьезным узким местом.
Вы предложили разделить вызовы на updateComponentTree
на несколько подзадач, которые позволяют происходить между ними событиями, которые могут быть«взлом», но не так уж и плохо, если только изменение шрифта не изменит размеры элементов и может привести к тому, что пользователь пропустит кнопку и т. д.
Если возможно, я бы посоветовал взглянуть на код вкомпонент выбора даты и посмотрите, сможете ли вы переписать его, чтобы вместо скрытия компонентов во всплывающем окне он фактически удалял / удалял их и при необходимости воссоздавал.Это не должно оказывать заметного влияния на отзывчивость средства выбора даты при его использовании, но, безусловно, ускорит обновление дерева компонентов, когда всплывающее окно не отображается.