ControlChannelTrigger Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Permite recibir notificaciones en tiempo real en segundo plano para los objetos que establecen una conexión TCP y desean recibir notificaciones del tráfico entrante.
Llame a **BackgroundExecutionManager.RequestAccessAsync** antes de usar ControlChannelTrigger.
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
- Herencia
- Atributos
- Implementaciones
Requisitos de Windows
| Requisitos | Description |
|---|---|
| Familia de dispositivos |
Windows Desktop Extension SDK (se introdujo en la versión 10.0.10240.0)
Windows Mobile Extension SDK (se introdujo en la versión 10.0.10240.0) |
| API contract |
Windows.Networking.Sockets.ControlChannelTriggerContract (se introdujo en la versión v1.0)
|
Comentarios
La clase ControlChannelTrigger y las interfaces relacionadas se usan para permitir que la aplicación use la red cuando la aplicación no sea la aplicación en primer plano. Normalmente, una aplicación universal de Windows se suspende cuando ya no está en primer plano y se mueve al fondo. Hay algunas excepciones para suspender una aplicación (impresión activa, acceso a una secuencia de audio y transferencia de archivos en segundo plano, por ejemplo). La clase ControlChannelTrigger permite que una aplicación de red que haya establecido una conexión TCP notifique al sistema que debe mantenerse operativa una conexión de red establecida y que el sistema debe reactivar la aplicación suspendida cuando se reciben datos de red para la aplicación o el intervalo de temporizador de mantenimiento del servidor expira. Usa desencadenadores de canal de control cuando la aplicación necesite mantener una conexión de red aunque esté en segundo plano.
Aunque la clase ControlChannelTrigger se puede usar con DatagramSocket, StreamSocket, o StreamSocketListener, Windows 10 proporciona un mecanismo mejorado para las aplicaciones que usan esas clases y quieren mantener las conexiones mientras están en segundo plano. Consulte comunicaciones de red en segundo plano para obtener más información sobre socketActivityTrigger y el agente de sockets.
Se recomienda usar la clase ControlChannelTrigger por instancias de lo siguiente que establecen una conexión TCP:
- La clase HttpClient del espacio de nombres Windows.Web. Http.
- Las clases httpClient y httpClientHandler en el espacio de nombres de System.Net. Http en .NET Framework. También se admiten clases personalizadas que derivan de estas clases.
- Interfaz
IXMLHTTPRequest2. La interfaz IXMLHTTPRequest2 es una extensión del objeto XMLHttpRequest definido en varios borradores de trabajo publicados por World Wide Web Consortium (W3C)
Hay varios tipos de intervalos de mantenimiento activo que pueden relacionarse con las aplicaciones de red. En el nivel más bajo, una aplicación puede establecer una opción tcp keep-alive para enviar paquetes tcp keep-alive entre una aplicación cliente y un servidor para mantener una conexión TCP establecida que no se usa. La clase HttpClient y el objeto JavaScript XMLHttpRequest no tienen una opción para habilitar TCP keep-alive y esta opción está deshabilitada de forma predeterminada. El tcp keep-alive debe estar deshabilitado para poder usar la clase ControlChannelTrigger para admitir notificaciones de red en segundo plano.
En el contexto de la clase ControlChannelTrigger, hay otros dos intervalos de mantenimiento activo que tienen un impacto.
- Intervalo de mantenimiento activo del servidor: esto hace referencia a un intervalo de mantenimiento activo en minutos que la aplicación se registra con el sistema para la frecuencia con la que se reactiva cuando la aplicación se ha suspendido. El sistema reactivará la aplicación en función del valor establecido para este intervalo de mantenimiento activo. Este valor se representa mediante la propiedad ServerKeepAliveIntervalInMinutes en una clase ControlChannelTrigger y se establece como argumento para el constructor ControlChannelTrigger. Este valor se considera un intervalo de mantenimiento del servidor, ya que una aplicación de red normalmente podría establecerlo en función del comportamiento conocido del servidor en el que la aplicación ha establecido una conexión TCP. Por ejemplo, si se sabe que un servidor web desconectará y quitará las conexiones TCP si no hay datos enviados por la aplicación durante 30 minutos, la aplicación de red podría establecer este intervalo de mantenimiento del servidor en 25 minutos.
- Intervalo de mantenimiento activo de red: esto hace referencia a un temporizador interno de mantenimiento activo mantenido por componentes de red de bajo nivel en la pila TCP en función de las condiciones de red actuales. Este valor representa el valor que necesitan los intermediarios de red para mantener intacta la conexión TCP. Estos intermediarios de red representan hardware y dispositivos, como servidores proxy de red y traductores de direcciones de red. Una aplicación de red no puede establecer este valor, ya que los componentes del sistema de bajo nivel determinan dinámicamente este valor en la pila TCP. El cálculo interno del intervalo de mantenimiento de la red tiene en cuenta el intervalo de mantenimiento activo del servidor. Una aplicación de red puede indicar al sistema que se debe reducir el temporizador de mantenimiento de red si se quitan regularmente las conexiones TCP establecidas llamando al método DecreaseNetworkKeepAliveInterval en una clase ControlChannelTrigger.
Historial de versiones
| Versión de Windows | Versión del SDK | Valor añadido |
|---|---|---|
| 1607 | 14393 | IsWakeFromLowPowerSupported |
Constructores
| Nombre | Description |
|---|---|
| ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
Crea un nuevo objeto ControlChannelTrigger con un identificador de desencadenador de canal de control, un valor para el intervalo keep-alive del servidor y el tipo de recurso solicitado para el desencadenador del canal de control. |
| ControlChannelTrigger(String, UInt32) |
Crea un nuevo objeto ControlChannelTrigger con un identificador de desencadenador de canal de control y un valor para el intervalo keep-alive del servidor. |
Propiedades
| Nombre | Description |
|---|---|
| ControlChannelTriggerId |
Obtiene una cadena que se puede usar para diferenciar varios desencadenadores de canal de control en el equipo local. |
| CurrentKeepAliveIntervalInMinutes |
Obtiene el intervalo de mantenimiento de la red, en minutos, mantenido por componentes de red de bajo nivel en la pila TCP en función de las condiciones de red actuales. |
| IsWakeFromLowPowerSupported |
Obtiene un valor que indica si se admite la reactivación de estados de baja potencia. |
| KeepAliveTrigger |
Obtiene un objeto que representa el desencadenador keep-alive asociado al objeto ControlChannelTrigger que una aplicación debe usar para enlazar la clase de activación con la infraestructura de agente en segundo plano. |
| PushNotificationTrigger |
Obtiene un objeto que representa el desencadenador de notificación de inserción asociado al objeto ControlChannelTrigger que una aplicación debe usar para enlazar la clase de activación con la infraestructura de agente en segundo plano. |
| ServerKeepAliveIntervalInMinutes |
Obtenga o establezca el intervalo de mantenimiento activo del servidor, en minutos, registrado con el sistema para indicar cuándo se deben reactivar la aplicación y las conexiones de red asociadas usadas. |
| TransportObject |
Obtiene el objeto de transporte que usa el sistema para la conexión de transporte asociada al objeto ControlChannelTrigger. |
Métodos
| Nombre | Description |
|---|---|
| Close() |
Cierra el objeto |
| DecreaseNetworkKeepAliveInterval() |
Proporciona una manera de que una aplicación indique que el intervalo de mantenimiento de la red mantenido por el sistema con intermediarios de red para reactivarse era demasiado largo y debería reducirse. Este método se aplica a los elementos de clase del windows.Networking.Sockets y los espacios de nombres relacionados. |
| Dispose() |
Realiza tareas definidas por la aplicación asociadas a la liberación, liberación o restablecimiento de recursos no administrados. |
| FlushTransport() |
Vacía los datos de red utilizados por la conexión de transporte asociada a la controlChannelTrigger de |
| UsingTransport(Object) |
Establece la conexión de transporte que va a usar un desencadenador de canal de control por elementos de clase en el Windows.Networking.Sockets y espacios de nombres relacionados. |
| WaitForPushEnabled() |
Permite que una aplicación notifique al sistema que se ha establecido una conexión y que el sistema debe completar la configuración interna del desencadenador del canal de control. |
Se aplica a
Consulte también
- IClosable
- SocketActivityTrigger
- Windows.Web.Http
- HttpClient
- conceptos básicos de redes
- comunicaciones de red en segundo plano
- IXMLHTTPRequest2
- System.Net.Http
- System.Net.Http.HttpClient
- System.Net.Http.HttpClientHandler
- de ejemplo de tarea en segundo plano de