我有 WPF 主机应用程序,并且 AddIn 也是 WPF,它返回 UI,如下所述:
[链接] http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.110%29.aspx
我想知道是否甚至可以将 WPF 插件激活为外部进程:看起来 WPF 插件只被认为与 AppDomain 隔离一起使用,这对我们的应用程序来说还不够好。如果 AddIn 因任何原因崩溃,我们不能让主机一直崩溃。即使加载的 AddIn 崩溃,我们也希望我们的主机应用程序能够运行。
我知道我们可以System.AddIn
通过以下方式实现这一目标:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(new AddInProcess(), AddInSecurityLevel.fulltrust);
但我有 WPF 插件不是System.AddIn
因为我们的插件有 WPF UI 组件。
我可以在新的应用程序域中激活 WPFAddIn,如下所示:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
我无法获得有关使用 WPF 插件处理这种情况的任何最新信息。是否有任何可能的示例,如何在单独的进程中激活 WPF 插件或在主机中捕获未处理的异常。基本上我不能让主机在插件崩溃时死掉。我确实遵循了以下链接,但结果发现线程很旧并且没有当前信息。
如果我可以处理主机中的异常,那也很好。让我解释一下我的问题:
我有 WPF 主机“A”。有 WPF 插件“B”。
我已经在主机“A”中加载了插件“B”。AddIn“B”有一个点击按钮。当用户单击按钮时,将在 AddIn "B" 中触发事件。在这种情况下,没有可用的尝试捕获,并且从该事件中抛出一些空异常。这个未处理的异常导致我的主机(以及 WPF 应用程序)崩溃。
我正在寻找一种解决方案,我可以在主机“A”中处理此异常,卸载插件“B”并继续主机而不会发生任何崩溃。
我试过 AddInAddInSecurityLevel.FullTrust
和 AddInSecurityLevel.Internet
.
任何提示或示例都会有所帮助。