【发布时间】:2023-04-08 07:36:01
【问题描述】:
我有一个生成表单的程序集(它是一个客户端软件)。我可以构建一个应用程序来获取和启动(显示)该表单而没有任何问题。但我无法启动该表单两次,因为该组件没有提供干净的封装解决方案。每次启动它都会崩溃,因为有几件事不会第二次成功初始化。不幸的是,无法修改该程序集。
现在我已将它放在单独的 AppDomain 中,以便能够卸载该程序集。这工作正常,托管应用程序现在可以多次启动该表单。
现在问题是:我有一个 WPF 应用程序,它不应该显示该程序集的表单,它应该将它包含在它自己的一个窗口中。程序集的 WinForms 表单已经在 WindowsFormHost 和 WPF-Window(带有 AssemblyAppDomain)中。但我不能将 WPF 窗口分配为主要 WPF 应用程序窗口之一的内容。它在 AssemblyAppDomain AppDomain 中(并且对象空间不与之共享)。
就我目前的搜索而言,应该可以在不同 AppDomain 中的两个 WPF 窗口之间建立连接,因为这是 System.AddIn 的工作方式。应该与 Pipeline、Contract 和 FrameworkElementAdapter 一起使用。我有点卡住,任何更具体的提示将不胜感激!
【问题讨论】: