WPF App - MFC App 互操作

Posted

技术标签:

【中文标题】WPF App - MFC App 互操作【英文标题】:WPF App - MFC App interoperation 【发布时间】:2010-06-21 13:08:25 【问题描述】:

我有一个小型 WPF 应用程序。我希望将其整合到我们现有的系统中。我有两个作为 MFC MDI 应用程序实现的 COM 服务器,我们称它们为 COM_Srv1 和 COM_Srv2。

    COM_Srv1 需要调用 WPF 应用程序的方法,例如 StartTask。在任务完成时,WPF 应用通知 COM_Srv1 应用 WPF 应用程序可能需要调用 COM_Srv2 上的方法来执行特定任务。完成此任务后,COM_Srv2 将结果通知 WPF 应用程序

这两种情况是相似的(MFC MDI COM 服务器调用 WPF 应用程序和 WPF 应用程序调用 MFC MDI COM 服务器),但我已经列出了它们。

如果是两个 MFC COM 服务器相互通信的情况,那么我会实现一个接口和一个 COM 事件源/接收器。

但是我不知道实现WPF应用程序和COM MFC MDI应用程序之间互操作的最佳方式? 我一直在考虑

    WCF 服务作为两者之间的桥梁 在两侧实现 COM 端点 - 即。在 WPF 应用程序中托管带有事件/源接收器的 COM 组件 等等

如果您能提供一些有关这方面的具体信息,我将不胜感激?

【问题讨论】:

【参考方案1】:

我在 MFC 应用程序中创建了一个带有事件源的 COM 类。我的 WPF 应用程序连接到这个 coclass 并接收事件。这样,从我的 MFC 应用程序到 WPF 应用程序的通信是可能的。确保在两个应用程序中正确实现线程和应用程序。

【讨论】:

以上是关于WPF App - MFC App 互操作的主要内容,如果未能解决你的问题,请参考以下文章

使用多线程进行慢速 Ms 互操作

WinForms 互操作,从 WinForms 拖放 -> WPF

WPF与Win32互操作

包装 MFC 应用程序(目标移动设备)以创建 dll 以在 c#.NET 中使用以进行互操作

将 MFC Gui 应用程序包装到 .NET 互操作的 DLL(或其他东西)中

使用 Reg-Free-COM 时未发送到基于 WPF 的 ActiveX 控件(COM 互操作)的事件