后台 UWP 网络通信

Posted

技术标签:

【中文标题】后台 UWP 网络通信【英文标题】:UWP network communication in the background 【发布时间】:2018-06-13 22:12:41 【问题描述】:

我正在尝试阅读 UWP 中名为 Network communications in the background 的后台任务网络官方教程。但是,由于本教程从 C++ 代码移植的效果不佳,因此代码在被修改为能够编译后,无法实例化 ControlChannelTrigger 对象并出现 AccessDenied 异常。

在下面一行抛出异常。

channel = new ControlChannelTrigger(channelId, serverKeepAliveInterval,
                                    ControlChannelTriggerResourceType.RequestHardwareSlot);

我阅读了关于锁定屏幕的评论并尝试将应用添加到锁定屏幕(尽管这应该不再是限制),但错误仍然存​​在。

我正在尝试与我自己的服务器保持持久的WebSocket 连接以允许推送通知(我知道 WNS,但它不是我的用例的正确选择)。

我的问题与相关问题ControlChannelTrigger in UWP Windows 10 access denied中的一个类似。

为简单起见,我将所有内容都实现为进程内后台任务。

任何人都可以提出解决方案或解决方法吗?教程会不会过时了?

【问题讨论】:

【参考方案1】:

不出所料,我又找到了自己问题的答案。

注册的后台任务不能是进程内任务,必须注册为进程外任务。

至于Windows.Networking.Sockets.WebSocketKeepAlive 入口点,我通过创建一个包含Windows.Networking.Sockets.WebSocketKeepAlive 并调用其Run(…) 方法的后台任务来解决问题。

【讨论】:

以上是关于后台 UWP 网络通信的主要内容,如果未能解决你的问题,请参考以下文章

UWP 后台 VoIP 通话

UWP 检测网络状态

在现代待机模式下触发后台任务

UWP 检测网络状态

如何在 UWP 应用程序中异步检测网络更改事件

在 UWP 应用程序中通过流重构通过网络发送的数据