【问题标题】:How do I send data from a WPF application to a UWP app?如何将数据从 WPF 应用程序发送到 UWP 应用程序?
【发布时间】:2020-10-16 09:22:21
【问题描述】:

我有一个 UWP 应用程序,它通过 USB 从微控制器接收数据并将数据记录到数据库中。我有第二个 WPF 应用程序,它也从一个单独的微控制器获取一些数据,我也想记录这些数据。为此,我想将数据从 WPF 应用程序发送到 UWP 应用程序并将数据记录在一起。我正在尝试将日志之间的最快日志速度设计为 50 毫秒。两个应用程序都在同一台计算机上运行。

到目前为止,我一直将其用作我的主要资源:https://docs.microsoft.com/en-us/windows/uwp/communication/interprocess-communication

我尝试过 TCP/UDP,但遇到了 UWP 无法使用 localhost 环回的问题。
我查看了名称管道,但似乎 UWP 不支持其应用程序包之外的命名管道。

似乎应用服务是我想要前进的方向,但我不确定这将如何运作。我看到的示例使应用服务看起来只是一些可以由另一个应用程序调用但不与其宿主应用程序交互的代码。我需要该服务将数据通过管道传输到 UWP 应用程序中。

我的另一个想法是,也许有一种方法可以将数据库记录器作为应用程序服务运行,并从 UWP 和 WPF 应用程序接收数据。它需要使用每个应用程序提供的最新值以固定间隔记录,并支持某种 Start() 和 Stop() 接口。

应用服务是正确的方向吗?还有其他选择吗?如果是正确的选择,宿主应用程序如何从应用服务发送或获取数据?

我觉得我需要将我的 UWP 应用程序移植到 WPF 或使用虚拟 com 端口在应用程序之间进行通信。

【问题讨论】:

    标签: c# wpf uwp


    【解决方案1】:

    App服务可以实现wpf和uwp应用程序之间的通信,当你运行这些应用程序,想要传输数据时,可以在wpf中创建AppServiceConnection对象,连接uwp应用程序,就可以实现wpf和uwp应用程序之间的通信了。例如,以下面的代码为例,将您在 uwp 项目清单中声明的​​ AppServiceName 传递给 AppServiceConnection 的 AppServiceName 并传递您的 uwp 应用程序的 PackageFamilyName。然后打开与应用服务端点的连接。通过订阅 RequestReceived 事件进行通信。

    在 WPF 应用程序中,

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        connection = new AppServiceConnection();
        connection.AppServiceName = "CommunicationService";
        connection.PackageFamilyName = "Microsoft.AppServiceBridge_8wekyb3d8bbwe";
        connection.RequestReceived += Connection_RequestReceived;
    
        connection.OpenAsync();
            
    }
    

    关于如何在你的uwp项目中配置的更多细节,你可以参考这个official sample

    另外,连接后可以调用AppServiceConnection.SendMessageAsync()方法向wpf发送数据。当wpf app接收到数据时,会触发RequestReceived事件,你可以通过args.Request.Message获取数据并调用args.Request.SendResponseAsync方法向uwp app发送数据。

    【讨论】:

      【解决方案2】:

      关注 StefanWick 的 this 指南。该方法描述了桌面扩展,但也适用于外部应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-13
        相关资源
        最近更新 更多