Idioma

ControlChannelTrigger Classe

Definição

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
Object Platform::Object IInspectable ControlChannelTrigger
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:

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.

Aplica-se a

Confira também