【问题标题】:Launching Actions in WPF Application from another Console Application从另一个控制台应用程序启动 WPF 应用程序中的操作
【发布时间】:2013-10-24 07:12:42
【问题描述】:

我有一个 WPF 应用程序,我需要从另一个控制台应用程序启动一些操作(并接收返回值)。

我遇到了很多问题,所以我不知道该怎么做:

1- 我尝试使用带参数的命令行(它可以启动 wpf 应用程序),但我无法接收返回值,因为它们仅在应用程序关闭时返回。它也不符合我的需要,因为必须在 wpf 应用程序仍在运行时调用一些操作。

2- 我想开发一个小 dll 来在控制台和 WPF 应用程序之间进行通信,但我不知道哪种技术会轻巧、高效并适合我的需求。

过去有没有人完成过类似的任务?如果是这样,你是怎么做的?

谢谢,

【问题讨论】:

    标签: c# wpf command-line console-application communication


    【解决方案1】:

    您要查找的内容通常称为“进程间通信”。命名管道是 IPC 的一种类型,可以在 .net 中使用。这个guide 应该可以帮助您入门。

    【讨论】:

    【解决方案2】:

    您可以使用WCF 技术来实现这一点。在您的 wpf 应用程序中定义合同,您应该在其中设置您的操作逻辑 - 方法,您希望通过这些方法管理您的应用程序。如果它是单面的,请使用 netTcpBinding 并在您的 WPF 应用程序中创建端点 - 它是来自外部命令的侦听器。然后在您的控制台应用程序中添加 wpf 应用程序的代理类,使用 svcutil。这将允许您发送命令。如果你做的一切正确 - 这应该工作。我想您有 1 个 wpf 应用程序和 1 个控制台应用程序。

    【讨论】:

    • 我正在尝试在我的 WPF 应用程序上使用 WCF 服务,但我想知道如果我的 WPF 应用程序继续侦听来自外部的命令,它是否会导致性能问题。谢谢
    • @user1948874 最终用户不会感受到性能损失。它只是另一个打开的端口,使用单独的线程进行侦听。您不应该对此发出警告。
    【解决方案3】:

    您可以启动您的 wpf 应用,然后使用:

    1. 命名管道 - 最简单的方法,但您必须创建应用程序之间的交互协议。例如,您可以传输序列化对象。 (example);
    2. 共享文件;
    3. WCF - 最强大和最复杂的技术。

    【讨论】:

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