У меня есть приложение WPF и элемент управления ActiveX, который встроен в приложение WPF с помощью элемента управления WindowsFormsHost
.
Элемент управления ActiveX
используется для связи с внешним приложением, которое рисует 3D-содержимое в элементе управления.
Одна большая проблема этой настройки заключается в том, что если элемент управления ActiveX выполняет некоторые длительные операции, остальная часть приложения WPF блокируется.
Я хотел бы решить эту проблему и каким-то образом предотвратить размещение элемента управления ActiveX
в том же потоке, что и остальные элементы управления в моем пользовательском интерфейсе.
Я искал возможные решения и нашел эту статью:
https://blogs.msdn.microsoft.com/dwayneneed/2007/04/26/multithreaded-ui-hostvisual/
К сожалению, я не могу использовать этот образец для размещения элемента WindowsFormsHost
, поскольку он не является производным от Visual
.
Единственный другой вариант, который я мог реализовать, - это разместить элемент управления ActiveX
в отдельном окне, которое я запускаю в отдельном потоке.
Хотя это работает, управлять им довольно грязно, так как мне приходится вручную привязывать отдельное окно к главному окну, чтобы получить вид единого макета.
Есть ли что-нибудь еще, что я могу попробовать сделать в режиме «единого окна», но также иметь элемент управления ActiveX
в отдельном потоке?