【问题标题】:Call method in remote winforms application?远程winforms应用程序中的调用方法?
【发布时间】:2011-08-22 09:45:53
【问题描述】:

由于我以前从未有过这样做的理由,所以我不知道如何执行以下操作,或者是否有可能?!

我有一个 C# winforms 单实例应用程序(从属),它上面有一个控件,可以使用自定义 .Net 控件显示计划数据。该应用程序需要从 DynamicsNAV / Navision (Master) 打开,因为它不能使用正在使用的控件。

一旦 Master 打开 Slave 应用程序,它需要传递一个参数,以便 Slave 可以收集正确的数据并显示它。我知道我可以将它作为命令行参数传递,但我们真正想做的是将它传递到一个方法中,以便我们可以随时更新 Slaves Schedule。我已经在 Slave 应用程序中创建了一个公共方法,但现在我不知道如何打开它并调用该方法。我想获得一个使用 Master winforms 应用程序的工作示例,但也无法正常工作。

任何人都可以提供任何建议或帮助吗?

谢谢, 卡尔

【问题讨论】:

    标签: c# winforms navision dynamics-nav


    【解决方案1】:

    如果您使用 Dynamics NAV 6 R2 和 Role Tailored Client,您可以使用 .NET interop 调用 WinForms 应用程序上的方法。如果您使用的是 Classic 客户端,则需要实现一个 COM 组件来执行相同的操作。

    在这种情况下,WinForms 应用程序是“服务器”,而 NAV 是“客户端”。您可以在 MSDN 上查看使用 IpcChannel here 的示例。

    【讨论】:

      【解决方案2】:

      是的,您可以这样做 - 通常这称为“进程间通信”。

      有许多可用的方法,但只要您使用 .Net 3.5 或更高版本,您可能应该为此使用 WCF(Windows Communication Foundation)。互联网上有许多 WCF 指南和介绍。

      如果您使用的是 3.5 之前的 .Net 版本,请查看 .Net remoting

      【讨论】:

      • 反对票是怎么回事?有什么方法可以改进这个答案吗?
      【解决方案3】:

      以任何形式(命令参数、文件、TCP/IP 套接字等)发送数据、解析数据并使用从分离创建的参数调用您创建的命令怎么样?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        • 2011-12-15
        • 2017-02-13
        • 2017-04-19
        相关资源
        最近更新 更多