UWP Desktop Bridge是否支持多AppService并行连接及相关疑问
Desktop Bridge AppService 并行连接与提权WPF连接问题解答
一、UWP完全支持并行AppService连接,你的问题大概率出在代码实现
UWP允许同时运行多个独立的AppService连接,你当前未收到两个RequestReceived事件,主要可能存在以下问题:
- WPF端未发起连接请求:你创建了
AppServiceConnection对象,但缺少关键的OpenAsync()调用——这是建立连接的必要步骤,没有这一步不会触发UWP端的激活逻辑,自然不会触发后续的RequestReceived事件。 - UWP端需确保deferral正确释放:虽然你已经为每个连接获取了deferral,但要记得在连接关闭(如
Canceled事件触发)时调用Complete()方法释放资源,避免连接被系统强制回收。 - 可添加连接状态日志:在UWP端的
FT_AppServiceConnected和DD_AppServiceConnected事件中添加日志输出,先确认两个连接是否都成功建立,再排查RequestReceived的触发问题。
修正后的WPF端连接代码示例:
// 建立文件传输连接 ft_connection = new AppServiceConnection(); ft_connection.AppServiceName = "FileTransferAppService"; ft_connection.PackageFamilyName = Package.Current.Id.FamilyName; ft_connection.RequestReceived += ft_Connection_RequestReceived; ft_connection.ServiceClosed += ft_Connection_ServiceClosed; // 发起连接请求 var ftStatus = await ft_connection.OpenAsync(); if (ftStatus != AppServiceConnectionStatus.Success) { // 处理连接失败逻辑(如日志记录、提示用户) } // 建立设备发现连接 dd_connection = new AppServiceConnection(); dd_connection.AppServiceName = "DeviceDiscoverAppService"; dd_connection.PackageFamilyName = Package.Current.Id.FamilyName; dd_connection.RequestReceived += dd_Connection_RequestReceived; dd_connection.ServiceClosed += dd_Connection_ServiceClosed; // 发起连接请求 var ddStatus = await dd_connection.OpenAsync(); if (ddStatus != AppServiceConnectionStatus.Success) { // 处理连接失败逻辑(如日志记录、提示用户) }
二、同包下提升权限的WPF应用可以与UWP建立AppService连接
同包部署的全信任WPF应用,即便提升为管理员权限,依然可以和UWP组件建立AppService连接:
- 提权后的WPF进程依然能正确获取
Package.Current.Id.FamilyName,因为属于同一个Package Family。 - 连接逻辑与普通权限下完全一致,只需确保
AppServiceName和PackageFamilyName配置正确,并调用OpenAsync()发起连接。
内容的提问来源于stack exchange,提问作者consequence007
相关产品推荐
相关产品推荐

