ControlChannelTrigger Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ermöglicht den Empfang von Echtzeitbenachrichtigungen im Hintergrund für Objekte, die eine TCP-Verbindung herstellen und über eingehenden Datenverkehr benachrichtigt werden möchten.
Rufen Sie **BackgroundExecutionManager.RequestAccessAsync** auf, bevor Sie ControlChannelTrigger verwenden.
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
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
| Anforderungen | Beschreibung |
|---|---|
| Gerätefamilie |
Windows Desktop Extension SDK (eingeführt in 10.0.10240.0)
Windows Mobile Extension SDK (eingeführt in 10.0.10240.0) |
| API contract |
Windows.Networking.Sockets.ControlChannelTriggerContract (eingeführt in v1.0)
|
Hinweise
Die ControlChannelTrigger-Klasse und zugehörige Schnittstellen werden verwendet, damit Ihre App das Netzwerk verwenden kann, wenn ihre App nicht die Vordergrund-App ist. Eine universelle Windows-App wird normalerweise angehalten, wenn sie sich nicht mehr in der Vordergrund-App befindet und in den Hintergrund verschoben wird. Es gibt einige Ausnahmen beim Anhalten einer App (aktives Drucken, Zugreifen auf einen Audiodatenstrom und Übertragen von Dateien im Hintergrund). Die ControlChannelTrigger-Klasse ermöglicht eine Netzwerk-App, die eine TCP-Verbindung eingerichtet hat, um das System darüber zu informieren, dass eine hergestellte Netzwerkverbindung betriebsbereit bleiben soll, und das System sollte die angehaltene App aufwachen, wenn Netzwerkdaten für die App empfangen werden oder das Server-Keep-Alive-Zeitgeberintervall abläuft. Verwenden Sie Steuerkanaltrigger, wenn Ihre App eine Netzwerkverbindung verwalten muss, auch wenn sie sich im Hintergrund befindet.
Während die ControlChannelTrigger-Klasse mit DatagramSocket, StreamSocket oder StreamSocketListener verwendet werden kann, bietet Windows 10 einen verbesserten Mechanismus für Apps, die diese Klassen verwenden und verbindungen im Hintergrund verwalten möchten. Details zu SocketActivityTrigger und dem Socketbroker finden Sie unter Netzwerkkommunikation im Hintergrund.
Die ControlChannelTrigger-Klasse wird empfohlen, von Instanzen des folgenden Typs verwendet zu werden, die eine TCP-Verbindung herstellen:
- Die HttpClient-Klasse im Windows. Web.Http-Namespace.
- Die HttpClient- und HttpClientHandler-Klassen im System.Net. Http-Namespace im .NET Framework. Benutzerdefinierte Klassen, die von diesen Klassen abgeleitet werden, werden ebenfalls unterstützt.
- Die IXMLHTTPRequest2-Schnittstelle . Die IXMLHTTPRequest2-Schnittstelle ist eine Erweiterung des XMLHttpRequest-Objekts, das in mehreren Arbeitsentwürfen definiert ist, die vom World Wide Web Consortium (W3C) veröffentlicht wurden.
Es gibt mehrere Arten von Keep-Alive-Intervallen, die sich auf Netzwerk-Apps beziehen können. Auf der niedrigsten Ebene kann eine App eine TCP-Keep-Alive-Option festlegen, um TCP-Keep-Alive-Pakete zwischen einer Client-App und einem Server zu senden, um eine etablierte TCP-Verbindung aufrechtzuerhalten, die nicht verwendet wird. Die HttpClient-Klasse und das XMLHttpRequest-JavaScript-Objekt haben keine Option, TCP-Keep-Alive zu aktivieren, und diese Option ist standardmäßig deaktiviert. Der TCP-Keep-Alive muss deaktiviert werden, um die ControlChannelTrigger-Klasse zur Unterstützung von Hintergrundnetzwerkbenachrichtigungen zu verwenden.
Im Kontext der ControlChannelTrigger-Klasse gibt es zwei weitere Keep-Alive-Intervalle, die auswirkungen haben.
- Server-Keep-Alive-Intervall – Dies bezieht sich in Minuten auf ein Keep-Alive-Intervall, das von der App beim System registriert wird, um zu erfahren, wie oft die App angehalten wird. Das System aktiviert die App basierend auf dem für dieses Keep-Alive-Intervall festgelegten Wert. Dieser Wert wird durch die ServerKeepAliveIntervalInMinutes-Eigenschaft einer ControlChannelTrigger-Klasse dargestellt und als Argument auf den ControlChannelTrigger-Konstruktor festgelegt. Dieser Wert wird als Server-Keep-Alive-Intervall betrachtet, da eine Netzwerk-App dies normalerweise basierend auf dem bekannten Verhalten des Servers festlegen kann, mit dem die App eine TCP-Verbindung hergestellt hat. Wenn beispielsweise bekannt ist, dass ein Webserver TCP-Verbindungen trennt und absetzt, wenn keine Daten von der App für 30 Minuten gesendet werden, kann die Netzwerk-App dieses Server-Keep-Alive-Intervall auf 25 Minuten festlegen.
- Netzwerk-Keep-Alive-Intervall – Dies bezieht sich auf einen internen Keep-Alive-Timer, der von Netzwerkkomponenten auf niedriger Ebene im TCP-Stapel basierend auf aktuellen Netzwerkbedingungen verwaltet wird. Dieser Wert stellt den Wert dar, der von Netzwerkvermittlern benötigt wird, um die TCP-Verbindung intakt zu halten. Diese Netzwerkvermittler stellen Hardware und Geräte wie Netzwerkproxys und Netzwerkadressenübersetzer dar. Eine Netzwerk-App kann diesen Wert nicht festlegen, da dieser Wert dynamisch von Systemkomponenten auf niedriger Ebene im TCP-Stapel bestimmt wird. Die interne Berechnung des Netzwerk-Keep-Alive-Intervalls berücksichtigt das Server-Keep-Alive-Intervall. Eine Netzwerk-App kann dem System angeben, dass der Netzwerk-Keep-Alive-Timer verringert werden soll, wenn hergestellte TCP-Verbindungen regelmäßig gelöscht werden, indem die DecreaseNetworkKeepAliveInterval-Methode für eine ControlChannelTrigger-Klasse aufgerufen wird.
Versionsverlauf
| Windows-Version | SDK-Version | Mehrwert |
|---|---|---|
| 1607 | 14393 | IsWakeFromLowPowerSupported |
Konstruktoren
| Name | Beschreibung |
|---|---|
| ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType) |
Erstellt ein neues ControlChannelTrigger -Objekt mit einer Steuerkanaltrigger-ID, einem Wert für das Server-Keep-Alive-Intervall und dem Ressourcentyp, der für den Steuerkanaltrigger angefordert wurde. |
| ControlChannelTrigger(String, UInt32) |
Erstellt ein neues ControlChannelTrigger -Objekt mit einer Steuerkanaltrigger-ID und einem Wert für das Server-Keep-Alive-Intervall. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ControlChannelTriggerId |
Ruft eine Zeichenfolge ab, die verwendet werden kann, um verschiedene Steuerkanaltrigger auf dem lokalen Computer zu unterscheiden. |
| CurrentKeepAliveIntervalInMinutes |
Ruft das Netzwerk-Keep-Alive-Intervall in Minuten ab, das von Netzwerkkomponenten auf niedriger Ebene im TCP-Stapel basierend auf aktuellen Netzwerkbedingungen verwaltet wird. |
| IsWakeFromLowPowerSupported |
Ruft einen Wert ab, der angibt, ob das Aufwachen von Energiesparzuständen unterstützt wird. |
| KeepAliveTrigger |
Ruft ein Objekt ab, das den Keep-Alive-Trigger darstellt, der dem ControlChannelTrigger -Objekt zugeordnet ist, das eine App zum Binden der Aktivierungsklasse mit der Hintergrundbrokerinfrastruktur verwenden soll. |
| PushNotificationTrigger |
Ruft ein Objekt ab, das den Pushbenachrichtigungstrigger darstellt, der dem ControlChannelTrigger -Objekt zugeordnet ist, das eine App zum Binden der Aktivierungsklasse mit der Hintergrundbrokerinfrastruktur verwenden soll. |
| ServerKeepAliveIntervalInMinutes |
Rufen Sie das Server-Keep-Alive-Intervall in Minuten ab, das beim System registriert ist, um anzugeben, wann die verwendete App und die zugehörigen Netzwerkverbindungen aktiviert werden sollen. |
| TransportObject |
Ruft das Transportobjekt ab, das das System für die Transportverbindung verwendet, die dem ControlChannelTrigger -Objekt zugeordnet ist. |
Methoden
| Name | Beschreibung |
|---|---|
| Close() |
Schließt das ControlChannelTrigger -Objekt. |
| DecreaseNetworkKeepAliveInterval() |
Bietet eine Möglichkeit für eine App, anzugeben, dass das vom System verwaltete Netzwerk-Keep-Alive-Intervall mit Netzwerkintermediären zu lang war und verringert werden sollte. Diese Methode gilt für Klassenelemente im Windows. Networking.Sockets und zugehörige Namespaces. |
| Dispose() |
Führt anwendungsdefinierte Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen nicht verwalteter Ressourcen verknüpft sind. |
| FlushTransport() |
Löscht alle Netzwerkdaten, die von der Transportverbindung verwendet werden, die dem ControlChannelTrigger zugeordnet ist, zum Netzwerkstapel. |
| UsingTransport(Object) |
Legt die Transportverbindung fest, die von einem Steuerkanaltrigger durch Klassenelemente im Windows verwendet werden soll. Networking.Sockets und zugehörige Namespaces. |
| WaitForPushEnabled() |
Ermöglicht einer App, das System darüber zu benachrichtigen, dass eine Verbindung hergestellt wurde, und das System sollte die interne Konfiguration des Steuerkanaltriggers abschließen. |