【问题标题】:WinForm Plugin systemWinForm插件系统
【发布时间】:2010-05-29 18:49:43
【问题描述】:

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

我想将它们加载到他们自己的应用程序域中,但不认为这是可能的,因为 GUI。 我还想监视它们以判断它们是否没有响应并卸载它们。

这可能吗? 如果我升级到 WPF,事情会变得更简单。

【问题讨论】:

  • 您能否详细介绍一下您定义为无响应的内容。如果插件在主应用程序线程上“执行”,那么根据定义,您的整个应用程序将无响应。插件在做什么?
  • 基本上如果一个插件写得不好或加载有问题,我想知道,下次不加载它。

标签: c# .net wpf plugins


【解决方案1】:

如果您允许插件创建自己的 WinForms UI 控件,它们将必须与您的主 UI 在同一线程上运行,因此您无法将插件隔离在它们自己的 appdomain 中。

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

更新: 使用 WPF 和 System.AddIn(又名 MAF)it is possible 进行跨应用程序域的 UI。在去那条路线之前,我会阅读some opinions on MAF

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多