WinForm插件系统

时间:2010-05-29 18:49:44

标签: c# .net wpf plugins

我创建了一个c#2.0 WinForm应用程序,它加载dll,搜索接口,然后将接口加载为插件。我将插件加载到与主应用程序相同的appdomain中,因为它们有一个GUI,我将其作为选项卡项直接加载到应用程序中。

我想在他们自己的应用程序域中加载它们,但不要因为GUI而认为它是可能的。 我还想监视它们,告诉它们是否没有响应并卸载它们。

这可能吗? 如果我升级到WPF就更简单了。

1 个答案:

答案 0 :(得分:1)

如果您允许插件创建自己的WinForms UI控件,则必须在与主UI相同的线程上运行,因此您无法将插件隔离在自己的应用程序域中。

您可以做的是在主机和插件之间定义一个非UI抽象层,这样插件只会向主机发送它们需要的UI类型。然后,主机负责创建UI控件并将输入转发到插件。这使插件实例可以位于单独的应用程序域中。

使用WPF和System.AddIn(又名MAF)it is possible

更新来执行UI跨应用程序域。在走这条路之前我会先阅读some opinions on MAF