c# - 创建在外部进程中运行的 WPF "control"

标签 c# wpf appdomain external-process

我有一个 WPF 应用程序,其中包含许多子控件。

其中一个控件托管第三方库,该库在幕后运行一些 native 代码,这些代码会引发访问冲突并使应用程序崩溃。不幸的是,删除库不是一种选择。

我想做的是启动一个新的 Windows 进程,在其中托管第三方库,并以某种方式与之通信。与 Google Chrome 和 IE8 处理浏览器插件的方式非常相似。

问题是第三方库需要绘制到屏幕上,所以我必须以某种方式在我的 WPF 应用程序的主窗口中有一个 HTML iframe 的等价物。

我不确定如何开始,事实证明到目前为止很难用谷歌搜索。非常感谢任何建议。

最佳答案

这是一项艰巨的任务,但对您来说幸运的是,最近在这个领域已经完成了一些工作。

您听说过 .NET 3.5 中的 System.Addin 命名空间吗?在这种情况下它可能会有所帮助。它允许控件加载到单独的 AppDomain 中,但显示在同一 UI 中。我想您必须做一些工作才能使一切正常通信(以前从未这样做过),但这是可能的。

查看插件团队的早期帖子:http://blogs.msdn.com/clraddins/archive/2007/08/06/appdomain-isolated-wpf-add-ins-jesse-kaplan.aspx

他们似乎将样本和辅助代码保存在 codeplex 上:http://clraddins.codeplex.com/

我对此很感兴趣,所以如果你成功了,请告诉我们你的进展情况!

关于c# - 创建在外部进程中运行的 WPF "control",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121934/

相关文章:

c# - 使用 REST XML Web 服务

c# - 在一个请求中创建和设置 CRM 实体的状态

.net - 是否为每个请求创建 AppDomains?

c# - C# 应用程序中的多个 VB6 单元

c# - 如何在 C# 中从一个 mysql 表填充两个不同的数据网格

c# - .NET 可移植类库 [Serializable] 属性

c# - 将形状转换为二维空间

c# - C# 中是否有 std::for_each 算法模拟(Linq to Objects)

c# - 如何通知多个 View 模型变量更改?

c# - 二维图形矩阵模糊