Language

ControlChannelTrigger クラス

定義

TCP 接続を確立し、受信トラフィックの通知を受け取るオブジェクトに対して、バックグラウンドでリアルタイム通知を受信できるようにします。

ControlChannelTriggerを使用する前に、**BackgroundExecutionManager.RequestAccessAsync** 呼び出します。

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
継承
Object Platform::Object IInspectable ControlChannelTrigger
属性
実装

Windows の要件

要件 説明
デバイス ファミリ
Windows Desktop Extension SDK (10.0.10240.0 で導入)
Windows Mobile Extension SDK (10.0.10240.0 で導入)
API contract
Windows.Networking.Sockets.ControlChannelTriggerContract (v1.0 で導入)

注釈

ControlChannelTrigger クラスと関連インターフェイスは、アプリがフォアグラウンド アプリでない場合にアプリがネットワークを使用できるようにするために使用されます。 ユニバーサル Windows アプリは、通常、フォアグラウンド アプリ内にいなくなり、バックグラウンドに移動されると中断されます。 アプリの中断 (アクティブな印刷、オーディオ ストリームへのアクセス、バックグラウンドでのファイルの転送など) には、いくつかの例外があります。 ControlChannelTrigger クラスを使用すると、TCP 接続を確立したネットワーク アプリは、確立されたネットワーク接続を稼働状態に保つ必要があり、アプリのネットワーク データを受信したとき、またはサーバーキープアライブ タイマー間隔の有効期限が切れたときに、システムは中断されたアプリを起動する必要があることをシステムに通知できます。 アプリがバックグラウンドであってもネットワーク接続を維持する必要がある場合は、コントロール チャネル トリガーを使用します。

ControlChannelTrigger クラスは、DatagramSocket、StreamSocket、または StreamSocketListenerで使用できますが、Windows 10 は、これらのクラスを使用し、バックグラウンドで接続を維持するアプリ向けに改善されたメカニズムを提供します。 SocketActivityTrigger とソケット ブローカーの詳細については、バックグラウンド ネットワーク通信 参照してください。

ControlChannelTrigger クラスは、TCP 接続を確立する次のインスタンスで使用することをお勧めします。

  • Windows.Web.Http 名前空間の HttpClient クラス。
  • HttpClient と HttpClientHandler クラスは、.NET Framework の System.Net.Http 名前空間にあります。 これらのクラスから派生するカスタム クラスもサポートされています。
  • IXMLHTTPRequest2 インターフェイス。 IXMLHTTPRequest2 インターフェイスは、World Wide Web Consortium (W3C) によって発行されたいくつかの作業ドラフトで定義されている XMLHttpRequest オブジェクトの拡張機能です。

ネットワーク アプリに関連するキープアライブ間隔には、いくつかの種類があります。 最も低いレベルでは、アプリは TCP キープアライブ オプションを設定して、クライアント アプリとサーバーの間で TCP キープアライブ パケットを送信し、使用されていない確立された TCP 接続を維持できます。 HttpClient クラスと XMLHttpRequest JavaScript オブジェクトには TCP キープアライブを有効にするオプションがないため、このオプションは既定で無効になっています。 ControlChannelTrigger クラスを使用してバックグラウンド ネットワーク通知をサポートするには、TCP キープアライブを無効にする必要があります。

ControlChannelTrigger クラスのコンテキストには、影響を与える他の 2 つのキープアライブ間隔があります。

  • サーバーのキープアライブ間隔 - これは、アプリが中断されたときに起こされる頻度について、アプリがシステムに登録するキープアライブ間隔 (分) を指します。 システムは、このキープアライブ間隔に設定された値に基づいてアプリを起動します。 この値は、ControlChannelTrigger クラスの ServerKeepAliveIntervalInMinutes プロパティによって表され、ControlChannelTrigger コンストラクターの引数として設定されます。 ネットワーク アプリは通常、アプリが TCP 接続を確立したサーバーの既知の動作に基づいてこれを設定する可能性があるため、この値はサーバーのキープアライブ間隔と見なされます。 たとえば、アプリから 30 分間送信されたデータがない場合、Web サーバーが TCP 接続を切断して切断することがわかっている場合、ネットワーク アプリはこのサーバーのキープアライブ間隔を 25 分に設定できます。
  • ネットワーク キープアライブ間隔 - これは、現在のネットワーク状態に基づいて TCP スタック内の低レベルのネットワーク コンポーネントによって維持される内部キープアライブ タイマーを指します。 この値は、TCP 接続をそのまま維持するためにネットワーク中継局が必要とする値を表します。 これらのネットワーク中継局は、ネットワーク プロキシやネットワーク アドレス変換ツールなどのハードウェアとデバイスを表します。 この値は TCP スタック内の低レベルのシステム コンポーネントによって動的に決定されるため、ネットワーク アプリではこの値を設定できません。 ネットワーク キープアライブ間隔の内部計算では、サーバーのキープアライブ間隔が考慮されます。 ネットワーク アプリは、ControlChannelTrigger クラスで DecreaseNetworkKeepAliveInterval メソッドを呼び出すことによって、確立された TCP 接続が定期的に切断された場合に、ネットワーク キープアライブ タイマーを減らす必要があることをシステムに示すことができます。

バージョン履歴

Windows バージョン SDK のバージョン 付加価値
1607 14393 IsWakeFromLowPowerSupported

コンストラクター

Name 説明
ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType)

コントロール チャネル トリガー ID、サーバーキープアライブ間隔の値、およびコントロール チャネル トリガーに要求されたリソースの種類を持つ新しい ControlChannelTrigger オブジェクトを作成します。

ControlChannelTrigger(String, UInt32)

コントロール チャネル トリガー ID とサーバーキープアライブ間隔の値を持つ新しい ControlChannelTrigger オブジェクトを作成します。

プロパティ

Name 説明
ControlChannelTriggerId

ローカル コンピューター上のさまざまなコントロール チャネル トリガーを区別するために使用できる文字列を取得します。

CurrentKeepAliveIntervalInMinutes

現在のネットワークの状態に基づいて TCP スタック内の低レベルのネットワーク コンポーネントによって維持されるネットワーク キープアライブ間隔を分単位で取得します。

IsWakeFromLowPowerSupported

低電力状態からの復帰がサポートされているかどうかを示す値を取得します。

KeepAliveTrigger

アクティブ化クラスをバックグラウンド ブローカー インフラストラクチャにバインドするためにアプリが使用する ControlChannelTrigger オブジェクトに関連付けられたキープアライブ トリガーを表すオブジェクトを取得します。

PushNotificationTrigger

アクティブ化クラスをバックグラウンド ブローカー インフラストラクチャにバインドするためにアプリが使用する ControlChannelTrigger オブジェクトに関連付けられたプッシュ通知トリガーを表すオブジェクトを取得します。

ServerKeepAliveIntervalInMinutes

サーバーのキープアライブ間隔 (分単位) を取得または設定して、使用されたアプリと関連するネットワーク接続がいつ起動するかを示します。

TransportObject

ControlChannelTrigger オブジェクトに関連付けられたトランスポート接続にシステムが使用しているトランスポート オブジェクトを取得します。

メソッド

Name 説明
Close()

ControlChannelTrigger オブジェクトを閉じます。

DecreaseNetworkKeepAliveInterval()

システムによって維持されるネットワーク キープアライブ間隔とネットワーク中継局がウェイク アップするために維持する時間が長すぎて減らす必要があることをアプリが示す方法を提供します。 このメソッドは、Windows.Networking.Sockets および関連する名前空間のクラス要素に適用されます。

Dispose()

アンマネージド リソースの解放、解放、またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

FlushTransport()

ControlChannelTrigger に関連付けられているトランスポート接続によって使用されるすべてのネットワーク データをネットワーク スタックにフラッシュします。

UsingTransport(Object)

Windows.Networking.Sockets および関連する名前空間のクラス要素によって、コントロール チャネル トリガーによって使用されるトランスポート接続を設定します。

WaitForPushEnabled()

接続が確立され、システムがコントロール チャネル トリガーの内部構成を完了する必要があることをアプリがシステムに通知できるようにします。

適用対象

関連項目