ControlChannelTrigger Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Permite que as notificações em tempo real sejam recebidas em segundo plano para objetos que estabelecem uma conexão TCP e desejam ser notificados sobre o tráfego de entrada.
Chame **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
- Herança
- Atributos
- Implementações
Requisitos do Windows
| Requisitos | Description |
|---|---|
| Família de dispositivos |
Windows Desktop Extension SDK (introduzida na 10.0.10240.0)
Windows Mobile Extension SDK (introduzida na 10.0.10240.0) |
| API contract |
Windows.Networking.Sockets.ControlChannelTriggerContract (introduzida na v1.0)
|
Comentários
A classe ControlChannelTrigger e as interfaces relacionadas são usadas para permitir que seu aplicativo use a rede quando seu aplicativo não for o aplicativo em primeiro plano. Um aplicativo de Windows Universal normalmente é suspenso quando ele não está mais no aplicativo em primeiro plano e movido para o segundo plano. Há algumas exceções para suspender um aplicativo (imprimir ativamente, acessar um fluxo de áudio e transferir arquivos em segundo plano, por exemplo). A classe ControlChannelTrigger permite que um aplicativo de rede que estabeleceu uma conexão TCP notifique o sistema de que uma conexão de rede estabelecida deve ser mantida operacional e o sistema deve ativar o aplicativo suspenso quando os dados de rede forem recebidos para o aplicativo ou o intervalo de temporizador de keep-alive do servidor expirar. Use gatilhos de canal de controle quando seu aplicativo precisar manter uma conexão de rede mesmo que esteja em segundo plano.
Embora a classe ControlChannelTrigger possa ser usada com DatagramSocket, StreamSocket ou StreamSocketListener, Windows 10 fornece um mecanismo aprimorado para aplicativos que usam essas classes e querem manter conexões em segundo plano. Consulte comunicações de rede em segundo plano para obter detalhes sobre SocketActivityTrigger e o agente de soquete.
A classe ControlChannelTrigger é recomendada para ser usada por instâncias do seguinte que estabelecem uma conexão TCP:
- A classe HttpClient no Windows. Namespace Web.Http.
- As classes HttpClient e HttpClientHandler no System.Net. Namespace http no .NET Framework. Classes personalizadas que derivam dessas classes também têm suporte.
- A interface IXMLHTTPRequest2 . A interface IXMLHTTPRequest2 é uma extensão para o objeto XMLHttpRequest definido em vários rascunhos de trabalho publicados pelo W3C (World Wide Web Consortium)
Há vários tipos de intervalos keep-alive que podem estar relacionados a aplicativos de rede. No nível mais baixo, um aplicativo pode definir uma opção de manutenção TCP para enviar pacotes de manutenção TCP entre um aplicativo cliente e um servidor para manter uma conexão TCP estabelecida que não está sendo usada. A classe HttpClient e o objeto JavaScript XMLHttpRequest não têm uma opção para habilitar o keep-alive do TCP e essa opção está desabilitada por padrão. O keep-alive TCP deve ser desabilitado para usar a classe ControlChannelTrigger para dar suporte a notificações de rede em segundo plano.
No contexto da classe ControlChannelTrigger, há dois outros intervalos keep-alive que têm um impacto.
- Intervalo de keep-alive do servidor – isso se refere a um intervalo de keep-alive em minutos que o aplicativo registra com o sistema para saber com que frequência será acordado quando o aplicativo foi suspenso. O sistema ativará o aplicativo com base no valor definido para esse intervalo de keep-alive. Esse valor é representado pela propriedade ServerKeepAliveIntervalInMinutes em uma classe ControlChannelTrigger e é definido como um argumento para o construtor ControlChannelTrigger. Esse valor é considerado um intervalo de keep-alive do servidor, pois um aplicativo de rede normalmente pode defini-lo com base no comportamento conhecido do servidor para o qual o aplicativo estabeleceu uma conexão TCP. Por exemplo, se souber que um servidor Web desconectará e descartará conexões TCP se não houver dados enviados pelo aplicativo por 30 minutos, o aplicativo de rede poderá definir esse intervalo de servidor como 25 minutos.
- Intervalo de manutenção de rede – refere-se a um temporizador de manutenção interna mantido por componentes de rede de baixo nível na pilha TCP com base nas condições de rede atuais. Esse valor representa o valor necessário pelos intermediários de rede para manter a conexão TCP intacta. Esses intermediários de rede representam hardware e dispositivos, como proxies de rede e tradutores de endereço de rede. Um aplicativo de rede não pode definir esse valor, pois esse valor é determinado dinamicamente por componentes de sistema de baixo nível na pilha TCP. O cálculo interno do intervalo de keep-alive da rede leva em conta o intervalo de keep-alive do servidor. Um aplicativo de rede pode indicar ao sistema que o temporizador de manutenção da rede deve ser reduzido se as conexões TCP estabelecidas forem descartadas regularmente chamando o método DecreaseNetworkKeepAliveInterval em uma classe ControlChannelTrigger.
Histórico de versões
| Versão do Windows | Versão do SDK | Valor adicionado |
|---|---|---|
| 1607 | 14393 | IsWakeFromLowPowerSupported |
Construtores
| Nome | Description |
|---|---|
| ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
Cria um novo objeto ControlChannelTrigger com uma ID de gatilho do canal de controle, um valor para o intervalo de keep-alive do servidor e o tipo de recurso solicitado para o gatilho do canal de controle. |
| ControlChannelTrigger(String, UInt32) |
Cria um novo objeto ControlChannelTrigger com uma ID de gatilho de canal de controle e um valor para o intervalo de keep-alive do servidor. |
Propriedades
| Nome | Description |
|---|---|
| ControlChannelTriggerId |
Obtém uma cadeia de caracteres que pode ser usada para diferenciar vários gatilhos de canal de controle no computador local. |
| CurrentKeepAliveIntervalInMinutes |
Obtém o intervalo de manutenção de rede, em minutos, mantido por componentes de rede de baixo nível na pilha TCP com base nas condições de rede atuais. |
| IsWakeFromLowPowerSupported |
Obtém um valor que indica se há suporte para acordar de estados de baixa energia. |
| KeepAliveTrigger |
Obtém um objeto que representa o gatilho keep-alive associado ao objeto ControlChannelTrigger que um aplicativo deve usar para associar a classe de ativação à infraestrutura do agente em segundo plano. |
| PushNotificationTrigger |
Obtém um objeto que representa o gatilho de notificação por push associado ao objeto ControlChannelTrigger que um aplicativo deve usar para associar a classe de ativação à infraestrutura do agente em segundo plano. |
| ServerKeepAliveIntervalInMinutes |
Obtenha ou defina o intervalo de keep-alive do servidor, em minutos, registrado com o sistema para indicar quando o aplicativo e as conexões de rede associadas usadas devem ser ativadas. |
| TransportObject |
Obtém o objeto de transporte que o sistema está usando para a conexão de transporte associada ao objeto ControlChannelTrigger . |
Métodos
| Nome | Description |
|---|---|
| Close() |
Fecha o objeto ControlChannelTrigger . |
| DecreaseNetworkKeepAliveInterval() |
Fornece uma maneira de um aplicativo indicar que o intervalo de manutenção da rede mantido pelo sistema com intermediários de rede para ativar era muito longo e deve ser reduzido. Esse método se aplica a elementos de classe no Windows. Networking.Sockets e namespaces relacionados. |
| Dispose() |
Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados. |
| FlushTransport() |
Libera todos os dados de rede usados pela conexão de transporte associada ao ControlChannelTrigger para a pilha de rede. |
| UsingTransport(Object) |
Define a conexão de transporte a ser usada por um gatilho de canal de controle por elementos de classe no Windows. Networking.Sockets e namespaces relacionados. |
| WaitForPushEnabled() |
Permite que um aplicativo notifique o sistema de que uma conexão foi estabelecida e que o sistema deve concluir a configuração interna do gatilho do canal de controle. |