【问题标题】:Why do we need the event StreamSocketListener.ConnectionReceived when we use SocketActivityTrigger?为什么我们在使用SocketActivityTrigger的时候需要事件StreamSocketListener.ConnectionReceived?
【发布时间】:2020-04-28 23:38:29
【问题描述】:
StreamSocketListener 在 UWP 应用程序中用于使应用程序像服务器一样工作,即侦听网络端口并在收到该端口上的连接时做出响应。因此,我们为事件 ConnectionReceived 分配一个处理程序,该事件在收到连接时被调用。
正如here 所解释的,当我们希望在应用程序暂停时也能实现这一点时,我们配置了一个后台任务,该任务在收到连接时使用 SocketActivityTrigger 触发。因此,在这种情况下,该过程发生在后台任务的 Run 方法中。那么这是否意味着,当使用 SocketActivityTrigger 时,我们不再需要分配 ConnectionReceived 事件处理程序了?
【问题讨论】:
标签:
sockets
uwp
win-universal-app
windows-10-universal
【解决方案1】:
为什么我们需要事件StreamSocketListener.ConnectionReceived when
我们使用 SocketActivityTrigger?
两者之间是有区别的。 StreamSocketListener 就像一个服务器,当你的应用连接到监听器时,StreamSocketListener.ConnectionReceived 事件将被触发。您可以在其中获取已连接的套接字并向其发送数据。
但是关于 SocketActivityTrigger,当你的应用在 socket 上接收到数据,keep alive 计时器过期或 socket 被关闭时,会触发 Run 方法。