众所周知,Windows 8.1和Windows Phone 8.1对第三方应用的后台活动施加了很多限制。例如,无需在Store App中开发类似服务器的功能(例如BitTorrent),而无需使用DisplayRequest
始终保持屏幕开启。
从最新的文档中,我感觉可以利用EnableTransferOwnership的方法StreamSocketListener将通常的请求处理代码委托给后台任务。问题是我不知道IBackgroundTask在这种情况下应该如何工作。通常,它们由某些条件/触发器激活,例如“Internet变为可用”。在这种情况下唯一合理的触发器似乎是ControlChannelTrigger但显然,文档暗示它不能与StreamSocketListener
一起使用,因为应用程序需要是创建和注册StreamSocket
的人,而不是等待某个连接客户端创建套接字。
现在可以在Windows 10 Universal app平台中实现基于StreamSocketListener
的服务器吗?如果是,我该怎么做?
答案 0 :(得分:0)
使用它来激活套接字活动的后台任务,例如在应用程序未处于活动状态时接收数据,例如:
var socketTaskBuilder = new BackgroundTaskBuilder();
socketTaskBuilder.Name = "SocketActivityBackgroundTask";
socketTaskBuilder.TaskEntryPoint = "SocketActivityBackgroundTask.SocketActivityTask";
var trigger = new SocketActivityTrigger();
socketTaskBuilder.SetTrigger(trigger);
var task = socketTaskBuilder.Register();
socket = new StreamSocket();
socket.EnableTransferOwnership(task.TaskId, SocketActivityConnectedStandbyAction.Wake);
有关完整示例,请查看Socket Activity sample或documentation。