Загрузить окно в отдельном потоке с отношениями родитель-потомок - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение Winforms с несколькими windows. Один из windows имеет очень тяжелые элементы пользовательского интерфейса и приводит к зависанию всего приложения при его запуске в течение некоторого времени. Есть ли способ запустить приложение в отдельном потоке, не жертвуя родительскими и дочерними отношениями между окном и основным приложением.

Пробные подходы:

  1. Запуск в том же потоке со всеми операциями в фоновом потоке и операцией пользовательского интерфейса, используя BeginInvoke. (все еще отстает)
  2. Запуск в совершенно отдельном потоке. (Вызывает межпотоковое исключение при попытке пометить главное окно как родительское как в основном потоке пользовательского интерфейса, так и в потоке пользовательского интерфейса окна)
  3. Отдельный поток без пометки в качестве основного потока в качестве родительского. (возникают проблемы при сворачивании и развертывании приложения, поскольку окно не запускается вместе с приложением и его необходимо запускать отдельно).
  4. Показывать окно при каждом запуске приложения, если окно открытый. (окно появляется поверх всех остальных windows и не работает, когда приложение покупается из фона другого приложения на передний план)
...