ControlChannelTrigger Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Consente di ricevere notifiche in tempo reale in background per gli oggetti che stabiliscono una connessione TCP e desiderano ricevere una notifica del traffico in ingresso.
Chiamare **BackgroundExecutionManager.RequestAccessAsync** prima di usare 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
- Ereditarietà
- Attributi
- Implementazioni
Requisiti Windows
| Requisiti | Descrizione |
|---|---|
| Famiglia di dispositivi |
Windows Desktop Extension SDK (è stato introdotto in 10.0.10240.0)
Windows Mobile Extension SDK (è stato introdotto in 10.0.10240.0) |
| API contract |
Windows.Networking.Sockets.ControlChannelTriggerContract (è stato introdotto in v1.0)
|
Commenti
La classe ControlChannelTrigger e le interfacce correlate vengono usate per consentire all'app di usare la rete quando l'app non è in primo piano. Un'app di Windows universale viene in genere sospesa quando non è più in primo piano e spostata in background. Esistono alcune eccezioni per sospendere un'app (ad esempio la stampa attiva, l'accesso a un flusso audio e il trasferimento di file in background). La classe ControlChannelTrigger consente a un'app di rete che ha stabilito una connessione TCP di notificare al sistema che deve essere mantenuta operativa una connessione di rete stabilita e il sistema deve riattivare l'app sospesa quando i dati di rete vengono ricevuti per l'app o l'intervallo timer keep-alive del server scade. Usa i trigger del canale di controllo quando l'app deve mantenere una connessione di rete anche se è in background.
Sebbene la classe ControlChannelTrigger possa essere usata con DatagramSocket, StreamSocketo StreamSocketListener, Windows 10 offre un meccanismo migliorato per le app che usano tali classi e vogliono mantenere le connessioni in background. Vedere Comunicazioni di rete in background per informazioni dettagliate su SocketActivityTrigger e sul gestore socket.
È consigliabile usare la classe ControlChannelTrigger dalle istanze di seguenti che stabiliscono una connessione TCP:
- Classe HttpClient nello spazio dei nomi Windows.Web.Http.
- Le classi HttpClient
e HttpClientHandler nello spazio dei nomi System.Net.Http in .NET Framework. Sono supportate anche classi personalizzate che derivano da queste classi. - Interfaccia IXMLHTTPRequest2. L'interfaccia IXMLHTTPRequest2 è un'estensione dell'oggetto XMLHttpRequest definito in diverse bozze di lavoro pubblicate dal World Wide Web Consortium (W3C)
Esistono diversi tipi di intervalli keep-alive che possono essere correlati alle app di rete. Al livello più basso, un'app può impostare un'opzione keep-alive TCP per inviare pacchetti keep-alive TCP tra un'app client e un server per mantenere una connessione TCP stabilita che non viene usata. La classe HttpClient
Nel contesto della classe ControlChannelTrigger esistono due altri intervalli keep-alive che hanno un impatto.
- Intervallo keep-alive del server: si riferisce a un intervallo keep-alive in minuti in cui l'app viene registrata con il sistema per la frequenza di svegliarsi quando l'app è stata sospesa. Il sistema riattiva l'app in base al valore impostato per questo intervallo keep-alive. Questo valore è rappresentato dalla proprietà ServerKeepAliveIntervalInMinutes in una classe ControlChannelTrigger ed è impostato come argomento per il costruttore ControlChannelTrigger. Questo valore è considerato un intervallo keep-alive del server perché un'app di rete potrebbe in genere impostarla in base al comportamento noto del server a cui l'app ha stabilito una connessione TCP. Ad esempio, se è noto che un server Web disconnette e rilascia le connessioni TCP se non sono presenti dati inviati dall'app per 30 minuti, l'app di rete potrebbe impostare l'intervallo keep-alive del server su 25 minuti.
- Intervallo keep-alive di rete: si riferisce a un timer keep-alive interno gestito da componenti di rete di basso livello nello stack TCP in base alle condizioni di rete correnti. Questo valore rappresenta il valore necessario dagli intermediari di rete per mantenere intatta la connessione TCP. Questi intermediari di rete rappresentano hardware e dispositivi come proxy di rete e traduttori di indirizzi di rete. Un'app di rete non può impostare questo valore, poiché questo valore viene determinato dinamicamente dai componenti di sistema di basso livello nello stack TCP. Il calcolo interno dell'intervallo keep-alive di rete tiene conto dell'intervallo keep-alive del server. Un'app di rete può indicare al sistema che il timer keep-alive di rete deve essere ridotto se le connessioni TCP stabilite vengono eliminate regolarmente chiamando il metodo DecreaseNetworkKeepAliveInterval su una classe ControlChannelTrigger.
Cronologia delle versioni
| Versione di Windows | Versione dell'SDK | Valore aggiunto |
|---|---|---|
| 1607 | 14393 | IsWakeFromLowPowerSupported |
Costruttori
| Nome | Descrizione |
|---|---|
| ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
Crea un nuovo oggetto ControlChannelTrigger con un ID trigger del canale di controllo, un valore per l'intervallo keep-alive del server e il tipo di risorsa richiesto per il trigger del canale di controllo. |
| ControlChannelTrigger(String, UInt32) |
Crea un nuovo oggetto ControlChannelTrigger con un ID trigger del canale di controllo e un valore per l'intervallo keep-alive del server. |
Proprietà
| Nome | Descrizione |
|---|---|
| ControlChannelTriggerId |
Ottiene una stringa che può essere utilizzata per distinguere vari trigger del canale di controllo nel computer locale. |
| CurrentKeepAliveIntervalInMinutes |
Ottiene l'intervallo keep-alive della rete, in minuti, gestito da componenti di rete di basso livello nello stack TCP in base alle condizioni di rete correnti. |
| IsWakeFromLowPowerSupported |
Ottiene un valore che indica se la riattivazione da stati a basso consumo è supportata. |
| KeepAliveTrigger |
Ottiene un oggetto che rappresenta il trigger keep-alive associato all'oggetto ControlChannelTrigger che un'app deve usare per associare la classe di attivazione all'infrastruttura broker in background. |
| PushNotificationTrigger |
Ottiene un oggetto che rappresenta il trigger di notifica push associato all'oggetto ControlChannelTrigger che un'app deve usare per associare la classe di attivazione all'infrastruttura broker in background. |
| ServerKeepAliveIntervalInMinutes |
Ottenere o impostare l'intervallo keep-alive del server, in minuti, registrato con il sistema per indicare quando l'app e le connessioni di rete associate usate devono riattivarsi. |
| TransportObject |
Ottiene l'oggetto trasporto utilizzato dal sistema per la connessione di trasporto associata all'oggetto ControlChannelTrigger. |
Metodi
| Nome | Descrizione |
|---|---|
| Close() |
Chiude l'oggetto ControlChannelTrigger |
| DecreaseNetworkKeepAliveInterval() |
Consente a un'app di indicare che l'intervallo keep-alive della rete gestito dal sistema con intermediari di rete per riattivarsi era troppo lungo e dovrebbe essere ridotto. Questo metodo si applica agli elementi della classe nel Windows.Networking.Sockets e agli spazi dei nomi correlati. |
| Dispose() |
Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione di risorse non gestite. |
| FlushTransport() |
Scarica tutti i dati di rete usati dalla connessione di trasporto associata all'ControlChannelTrigger allo stack di rete. |
| UsingTransport(Object) |
Imposta la connessione di trasporto da utilizzare da un trigger del canale di controllo dagli elementi della classe nel Windows.Networking.Sockets e dagli spazi dei nomi correlati. |
| WaitForPushEnabled() |
Consente a un'app di notificare al sistema che è stata stabilita una connessione e che il sistema deve completare la configurazione interna del trigger del canale di controllo. |
Si applica a
Vedi anche
- IClosable
- SocketActivityTrigger
- Windows.Web.Http
- HttpClient
- nozioni di base sulla rete di
- Comunicazioni di rete in background
- IXMLHTTPRequest2
- System.Net.Http
- System.Net.Http.HttpClient
- System.Net.Http.HttpClientHandler
- esempio di attività in background