在backgroundtask中使用StreamSocket

时间:2015-11-03 20:10:41

标签: sockets windows-10 windows-10-mobile

Windows 10 Universal应用程序中的一项新功能是您可以将StreamSocket的所有权(SocketStream.TransferOwnership)转移到"套接字代理"当应用程序未运行时,然后通过套接字活动触发器对套接字活动作出反应。

这里有一个示例https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/SocketActivityStreamSocket

但是我很难确定这是否可以用于例如Windows 10移动版上的IRC客户端。套接字似乎几乎不变,触发器只会偶尔运行?理想情况下,您希望使用"后台套接字"在未在前台运行时记录所有套接字活动...

我还没有找到关于此功能的更多内容,而且MSDN文档非常稀少

1 个答案:

答案 0 :(得分:1)

  
    

看起来套接字几乎不变,触发器只会偶尔运行?理想情况下,您希望使用"后台套接字"在未在前台运行时记录所有套接字活动

  

当套接字所有权转移到后台时,后台任务将在任何套接字激活时触发。例如,从套接字服务器发送了新数据,或者套接字已关闭。

如果您只希望后台任务在应用程序未在前台运行时处理套接字活动,则应用程序可以通过以下代码取回所有权:

    SocketActivityInformation socketInformation;

    if (SocketActivityInformation.AllSockets.TryGetValue(SOCKET_ID, out socketInformation))
    {
        socket = socketInformation.StreamSocket;
    }

应用开始:取回所有权

应用暂停:转让所有权

应用恢复:取回所有权

如果我对你的问题有任何误解,请纠正我:)