【发布时间】:2018-11-24 09:12:55
【问题描述】:
我正在尝试为 UWP 应用创建后台任务。该任务应该由来自网络套接字连接的数据包触发。
我已经测试了网络套接字,它按预期工作。
要使后台任务正常工作,根据 Microsoft 后台网络教程 (Network communications in the background),必须实例化 ControlChannelTrigger 并调用 channel.UsingTransport(socket) 方法。然后应该调用socket.ConnectAsync(...)。
但是,当在channel.UsingTransport(socket) 之后调用socket.ConnectAsync(...) 时,socket.ConnectAsync(...) 方法会引发异常并显示以下消息。
HRESULT 异常:0x80072F75
在没有channel.UsingTransport(socket) 的情况下调用时,连接建立没有问题。
为了在后台任务中使用套接字,我必须在调用channel.UsingTransport(socket)后建立连接。
谁能解释为什么会发生这个错误?
【问题讨论】:
-
此应用的目标平台是什么?
ControlChannelTrigger类不适用于 Windows 手机。 -
它是桌面 x64。我知道电话限制。此应用不适用于手机。
-
最后一个明显的问题,你打电话给
BackgroundExecutionManager.RequestAccessAsync()link了吗?我知道这不需要从 UI 线程调用,但是从您发布的代码中,没有办法知道这一点。 -
是的,我做到了。我有两种设置后台任务的方法。每个人在注册任务之前都调用了
BackgroundExecutionManager.RequestAccessAsync()。我刚刚通过删除第二个方法检查了错误是否是由于对该方法的两次调用,但发生了相同的异常。
标签: c# sockets websocket uwp background