ControlChannelTrigger 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
允许在后台接收建立 TCP 连接并希望收到传入流量通知的对象的实时通知。
在使用 ControlChannelTrigger 之前调用 BackgroundExecutionManager.RequestAccessAsync。
注意
Windows Phone不支持此类。
public ref class ControlChannelTrigger sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(Windows.Networking.Sockets.IControlChannelTriggerFactory, 65536, Windows.Networking.Sockets.ControlChannelTriggerContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Networking.Sockets.ControlChannelTriggerContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
class ControlChannelTrigger final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Networking.Sockets.ControlChannelTriggerContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Networking.Sockets.IControlChannelTriggerFactory, 65536, "Windows.Networking.Sockets.ControlChannelTriggerContract")]
class ControlChannelTrigger final : IClosable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Networking.Sockets.IControlChannelTriggerFactory), 65536, typeof(Windows.Networking.Sockets.ControlChannelTriggerContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Networking.Sockets.ControlChannelTriggerContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
public sealed class ControlChannelTrigger : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Networking.Sockets.ControlChannelTriggerContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Networking.Sockets.IControlChannelTriggerFactory), 65536, "Windows.Networking.Sockets.ControlChannelTriggerContract")]
public sealed class ControlChannelTrigger : System.IDisposable
Public NotInheritable Class ControlChannelTrigger
Implements IDisposable
- 继承
- 属性
- 实现
Windows 要求
设备系列 |
Windows Desktop Extension SDK (在 10.0.10240.0 中引入)
Windows Mobile Extension SDK (在 10.0.10240.0 中引入) |
API contract |
Windows.Networking.Sockets.ControlChannelTriggerContract (在 v1.0 中引入)
|
注解
当应用不是前台应用时,ControlChannelTrigger 类和相关接口用于使应用能够使用网络。 当通用 Windows 应用不再位于前台应用并移动到后台时,它通常会暂停。 暂停应用 (主动打印、访问音频流和在后台传输文件(例如,) )存在一些例外情况。 ControlChannelTrigger 类允许已建立 TCP 连接的网络应用通知系统建立的网络连接应保持正常运行,并且系统应在收到应用的网络数据或服务器保持连接计时器间隔过期时唤醒挂起的应用。 当应用需要维护网络连接时,即使它位于后台,也可以使用控制通道触发器。
虽然 ControlChannelTrigger 类可与 DatagramSocket、StreamSocket 或 StreamSocketListener 一起使用,但Windows 10为使用这些类并希望在后台保持连接的应用提供了改进的机制。 有关 SocketActivityTrigger 和套接字代理的详细信息,请参阅后台的网络通信。
建议以下实例使用 ControlChannelTrigger 类来建立 TCP 连接:
- Windows.Web.Http 命名空间中的 HttpClient 类。
- .NET Framework System.Net.Http 命名空间中的 HttpClient 和 HttpClientHandler 类。 还支持派生自这些类的自定义类。
- IXMLHTTPRequest2 接口。 IXMLHTTPRequest2 接口是 XMLHttpRequest 对象的扩展,在万维网联盟发布的多个工作草案中定义 (W3C)
有多种类型的保持连接间隔可能与网络应用相关。 在最低级别,应用可以设置 TCP 保持连接选项,以在客户端应用和服务器之间发送 TCP 保持连接数据包,以维护未使用的已建立 TCP 连接。 HttpClient 类和 XMLHttpRequest JavaScript 对象没有启用 TCP 保持连接的选项,此选项默认处于禁用状态。 必须禁用 TCP keep-alive 才能使用 ControlChannelTrigger 类来支持后台网络通知。
在 ControlChannelTrigger 类的上下文中,还有另外两个有影响的保持连接间隔。
- 服务器保持连接间隔 - 这是指应用向系统注册的保持连接间隔(以分钟为单位),以便在应用暂停时被唤醒的频率。 系统会根据为此保持连接间隔设置的值唤醒应用。 此值由 ControlChannelTrigger 类上的 ServerKeepAliveIntervalInMinutes 属性表示,并设置为 ControlChannelTrigger 构造函数的参数。 此值被视为服务器保持连接间隔,因为网络应用通常可能会根据应用已建立 TCP 连接的服务器的已知行为来设置此值。 例如,如果已知 Web 服务器在 30 分钟内未发送任何数据,Web 服务器将断开连接并断开 TCP 连接,则网络应用可以将此服务器保持连接间隔设置为 25 分钟。
- 网络保持连接间隔 - 这是指由 TCP 堆栈中的低级别网络组件根据当前网络条件维护的内部保持连接计时器。 此值表示网络中介保持 TCP 连接不变所需的值。 这些网络中介表示硬件和设备,例如网络代理和网络地址转换器。 网络应用无法设置此值,因为此值由 TCP 堆栈中的低级别系统组件动态确定。 网络保持连接间隔的内部计算会考虑服务器保持连接间隔。 网络应用可以向系统指示,如果通过对 ControlChannelTrigger 类调用 DecreaseNetworkKeepAliveInterval 方法定期断开已建立的 TCP 连接,则应减少网络保持连接计时器。
版本历史记录
Windows 版本 | SDK 版本 | 已添加值 |
---|---|---|
1607 | 14393 | IsWakeFromLowPowerSupported |
构造函数
ControlChannelTrigger(String, UInt32) |
使用控制通道触发器 ID 和服务器保持活动间隔的值创建新的 ControlChannelTrigger 对象。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
创建一个新的 ControlChannelTrigger 对象,其中包含控制通道触发器 ID、服务器保持连接间隔的值以及为控制通道触发器请求的资源类型。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
属性
ControlChannelTriggerId |
获取可用于区分本地计算机上的各种控制通道触发器的字符串。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
CurrentKeepAliveIntervalInMinutes |
获取由 TCP 堆栈中的低级别网络组件根据当前网络条件维护的网络保持连接间隔(以分钟为单位)。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
IsWakeFromLowPowerSupported |
获取一个值,该值指示是否支持从低功耗状态唤醒。 |
KeepAliveTrigger |
获取一个 对象,该对象表示与 ControlChannelTrigger 对象关联的保持连接触发器,应用应使用该对象将激活类与后台代理基础结构绑定。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
PushNotificationTrigger |
获取一个 对象,该对象表示与 ControlChannelTrigger 对象关联的推送通知触发器,应用应使用该对象将激活类与后台代理基础结构绑定。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
ServerKeepAliveIntervalInMinutes |
获取或设置向系统注册的服务器保持连接间隔(以分钟为单位),以指示应用和关联的网络连接应何时唤醒。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
TransportObject |
获取系统用于与 ControlChannelTrigger 对象关联的传输连接的传输对象。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
方法
Close() |
关闭 ControlChannelTrigger 对象。 注意 Windows Phone 不支持此方法。 |
DecreaseNetworkKeepAliveInterval() |
为应用提供一种方法,以指示系统使用网络中介进行唤醒时维护的网络保持连接间隔太长且应减少。 此方法适用于 Windows.Networking.Sockets 和相关命名空间中的类元素。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
Dispose() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 |
FlushTransport() |
将与 ControlChannelTrigger 关联的传输连接使用的任何网络数据刷新到网络堆栈。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
UsingTransport(Object) |
设置由 Windows.Networking.Sockets 和相关命名空间中的类元素的控制通道触发器使用的传输连接。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |
WaitForPushEnabled() |
允许应用通知系统已建立连接,并且系统应完成控制通道触发器的内部配置。 注意 Windows Phone不支持 ControlChannelTrigger 类。 |