You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:45:05