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.
Nota
Questa classe non è supportata in Windows Phone.
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
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 stampando attivamente, accedendo a un flusso audio e trasferendo 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.
Anche se la classe ControlChannelTrigger può essere usata con DatagramSocket, StreamSocket o StreamSocketListener, Windows 10 fornisce un meccanismo migliorato per le app che usano tali classi e vogliono mantenere le connessioni in background. Per informazioni dettagliate su SocketActivityTrigger e sul gestore socket, vedere Comunicazioni di rete in background.
La classe ControlChannelTrigger è consigliata per essere usata dalle istanze di seguenti che stabiliscono una connessione TCP:
- Classe HttpClient nello spazio dei nomi Windows.Web.Http .
- 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 per l'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 e l'oggetto JavaScript XMLHttpRequest non dispongono di un'opzione per abilitare TCP keep-alive e questa opzione è disabilitata per impostazione predefinita. Il keep-alive TCP deve essere disabilitato per usare la classe ControlChannelTrigger per supportare le notifiche di rete in background.
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 esegue la registrazione con il sistema per la frequenza di riattivarsi 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 e viene impostato come argomento sul costruttore ControlChannelTrigger. Questo valore viene considerato un intervallo keep-alive del server perché un'app di rete potrebbe normalmente impostare questo valore 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, ad esempio proxy di rete e convertitori di indirizzi di rete. Un'app di rete non può impostare questo valore, poiché questo valore viene determinato dinamicamente da 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 regolarmente eliminate chiamando il metodo DecreaseNetworkKeepAliveInterval in una classe ControlChannelTrigger.
Cronologia delle versioni
Versione di Windows | Versione dell'SDK | Valore aggiunto |
---|---|---|
1607 | 14393 | IsWakeFromLowPowerSupported |
Costruttori
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
Proprietà
ControlChannelTriggerId |
Ottiene una stringa che può essere utilizzata per distinguere vari trigger del canale di controllo nel computer locale. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
IsWakeFromLowPowerSupported |
Ottiene un valore che indica se è supportata la riattivazione da stati a basso consumo. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
TransportObject |
Ottiene l'oggetto trasporto utilizzato dal sistema per la connessione di trasporto associata all'oggetto ControlChannelTrigger . Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
Metodi
Close() |
Chiude l'oggetto ControlChannelTrigger . Nota Questo metodo non è supportato in Windows Phone. |
DecreaseNetworkKeepAliveInterval() |
Fornisce un modo per un'app per 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 negli spazi dei nomi Windows.Networking.Sockets e correlati. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
Dispose() |
Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite. |
FlushTransport() |
Scarica tutti i dati di rete usati dalla connessione di trasporto associata a ControlChannelTrigger allo stack di rete. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
UsingTransport(Object) |
Imposta la connessione di trasporto da utilizzare da un trigger del canale di controllo dagli elementi della classe negli spazi dei nomi Windows.Networking.Sockets e correlati. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |
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. Nota La classe ControlChannelTrigger non è supportata in Windows Phone. |