ControlChannelTrigger 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
允许在后台接收建立 TCP 连接的对象的实时通知,并希望收到传入流量的通知。
在使用 ControlChannelTrigger 之前,先调用 “BackgroundExecutionManager.RequestAccessAsync”。
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 和套接字代理的详细信息,请参阅后台的网络通信。
建议使用以下建立 TCP 连接的实例使用 ControlChannelTrigger 类:
- Windows中的 HttpClient 类。Web.Http 命名空间。
- System.Net中的 HttpClient 和 HttpClientHandler 类。.NET Framework 中的 Http 命名空间。 也支持派生自这些类的自定义类。
- IXMLHTTPRequest2 接口。 IXMLHTTPRequest2 接口是万维网联合会(W3C)发布的多个工作草稿中定义的 XMLHttpRequest 对象的扩展。
有几种类型的保持连接间隔可能与网络应用相关。 在最低级别,应用可以设置 TCP 保持活动选项,以在客户端应用和服务器之间发送 TCP 保持活动数据包,以维护未使用的已建立的 TCP 连接。 HttpClient 类和 XMLHttpRequest JavaScript 对象没有启用 TCP 保持活动的选项,默认情况下禁用此选项。 必须禁用 TCP 保持活动状态才能使用 ControlChannelTrigger 类来支持后台网络通知。
在 ControlChannelTrigger 类的上下文中,还有另外两个保持连接间隔会影响。
- 服务器保持活动间隔 - 这是指应用在几分钟内注册到系统的保持活动间隔,以便在应用暂停时被唤醒的频率。 系统会根据为此保持活动间隔设置的值唤醒应用。 此值由 ControlChannelTrigger 类上的 ServerKeepAliveIntervalInMinutes 属性表示,并设置为 ControlChannelTrigger 构造函数的参数。 此值被视为服务器保持活动间隔,因为网络应用通常可以根据应用建立 TCP 连接的服务器的已知行为来设置此值。 例如,如果已知 Web 服务器在 30 分钟内未发送任何数据,Web 服务器将断开连接并删除 TCP 连接,则网络应用可以将此服务器保持连接间隔设置为 25 分钟。
- 网络保持活动间隔 - 这是指 TCP 堆栈中低级别网络组件基于当前网络条件维护的内部保持活动计时器。 此值表示网络中介保持 TCP 连接完好无损所需的值。 这些网络中介表示硬件和设备,例如网络代理和网络地址翻译器。 网络应用无法设置此值,因为此值由 TCP 堆栈中的低级别系统组件动态确定。 网络保持活动间隔的内部计算会考虑服务器保持活动间隔。 网络应用可以通过在 ControlChannelTrigger 类上调用 DecreaseNetworkKeepAliveInterval 方法定期删除网络保持活动计时器时,系统应减少网络保持活动计时器。
版本历史记录
| Windows 版本 | SDK 版本 | 附加值 |
|---|---|---|
| 1607 | 14393 | IsWakeFromLowPowerSupported |
构造函数
| 名称 | 说明 |
|---|---|
| ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
创建一个新的 ControlChannelTrigger 对象,其中包含控制通道触发器 ID、服务器保持活动间隔的值,以及为控制通道触发器请求的资源类型。 |
| ControlChannelTrigger(String, UInt32) |
使用控制通道触发器 ID 和服务器保持活动间隔的值创建新的 ControlChannelTrigger 对象。 |
属性
| 名称 | 说明 |
|---|---|
| ControlChannelTriggerId |
获取可用于区分本地计算机上的各种控制通道触发器的字符串。 |
| CurrentKeepAliveIntervalInMinutes |
获取网络保持活动间隔(以分钟为单位)由 TCP 堆栈中的低级别网络组件根据当前网络条件维护。 |
| IsWakeFromLowPowerSupported |
获取一个值,该值指示是否支持从低功率状态唤醒。 |
| KeepAliveTrigger |
获取一个对象,该对象表示与 ControlChannelTrigger 对象关联的保持活动触发器,应用应使用该触发器将激活类与后台代理基础结构绑定。 |
| PushNotificationTrigger |
获取一个对象,该对象表示与 ControlChannelTrigger 对象关联的推送通知触发器,应用应使用该触发器将激活类与后台代理基础结构绑定。 |
| ServerKeepAliveIntervalInMinutes |
获取或设置服务器保持连接间隔(以分钟为单位)注册到系统,以指示使用的应用和关联的网络连接何时应唤醒。 |
| TransportObject |
获取系统用于 与 ControlChannelTrigger 对象关联的传输连接的传输对象。 |
方法
| 名称 | 说明 |
|---|---|
| Close() |
关闭 ControlChannelTrigger 对象。 |
| DecreaseNetworkKeepAliveInterval() |
为应用提供一种方法,用于指示系统维护的网络保持活动间隔与网络中介唤醒的时间过长,应减少。 此方法适用于Windows中的类元素。Networking.Sockets 和相关命名空间。 |
| Dispose() |
执行与释放、释放或重置非托管资源关联的应用程序定义任务。 |
| FlushTransport() |
将与 ControlChannelTrigger 关联的传输连接使用的任何网络数据刷新到网络堆栈。 |
| UsingTransport(Object) |
设置由Windows中的类元素由控制通道触发器使用的传输连接。Networking.Sockets 和相关命名空间。 |
| WaitForPushEnabled() |
允许应用通知系统已建立连接,并且系统应完成控制通道触发器的内部配置。 |