語言

ControlChannelTrigger 類別

定義

可讓建立 TCP 連線的物件在背景收到即時通知,並想要收到連入流量的通知。

先呼叫 **BackgroundExecutionManager.RequestAccessAsync**,再使用 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
繼承
Object Platform::Object IInspectable ControlChannelTrigger
屬性
實作

Windows 需求

規格需求 Description
裝置系列
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 和套接字代理程式的詳細資訊,請參閱背景 網路通訊。

建立 TCP 連線的下列實例建議使用 ControlChannelTrigger 類別:

有數種類型的保持運作間隔可能與網路應用程式相關。 在最低層級,應用程式可以設定 TCP keep-alive 選項,在用戶端應用程式與伺服器之間傳送 TCP keep-alive 封包,以維護未使用的已建立 TCP 連線。 HttpClient 類別和 XMLHttpRequest JavaScript 物件沒有啟用 TCP keep-alive 的選項,而且此選項預設為停用。 必須停用 TCP 保持運作,才能使用 ControlChannelTrigger 類別來支援背景網路通知。

在 ControlChannelTrigger 類別的內容中,有另外兩個持續運作間隔會影響。

  • 伺服器保持運作間隔 - 這是指應用程式在幾分鐘內向系統註冊的保持運作間隔,以取得應用程式暫停時喚醒的頻率。 系統會根據為此保持運作間隔所設定的值來喚醒應用程式。 此值是由 ControlChannelTrigger 類別上的 ServerKeepAliveIntervalInMinutes 属性表示,並且設定為 ControlChannelTrigger 建構函式的自變數。 此值被視為伺服器保持運作間隔,因為網路應用程式通常會根據應用程式已建立 TCP 連線的伺服器已知行為來設定此值。 例如,如果已知 Web 伺服器會在應用程式傳送 30 分鐘沒有數據時中斷連線並卸除 TCP 連線,則網路應用程式可以將此伺服器保持運作間隔設定為 25 分鐘。
  • 網路保持運作間隔 - 這是指 TCP 堆疊中低層級網路元件根據目前網路狀況所維護的內部保持連線定時器。 這個值代表網路媒介為了保持 TCP 連線保持不變所需的值。 這些網路媒介代表硬體和裝置,例如網路 Proxy 和網路位址翻譯工具。 網路應用程式無法設定此值,因為此值是由 TCP 堆疊中的低階系統元件動態決定。 網路保持運作間隔的內部計算會考慮伺服器保持運作間隔。 網路應用程式可以向系統指出,如果在 ControlChannelTrigger 類別上呼叫 DecreaseNetworkKeepAliveInterval 方法,定期卸除已建立的 TCP 連線,則應減少網路保持運作定時器。

版本歷程記錄

Windows 版本 SDK 版本 增加值
1607 14393 IsWakeFromLowPowerSupported

建構函式

名稱 Description
ControlChannelTrigger(String, UInt32, ControlChannelTriggerResourceType)

使用控制通道觸發程式標識碼、伺服器保持運作間隔的值,以及控件通道觸發程式所要求的資源類型,建立新的 ControlChannelTrigger 物件。

ControlChannelTrigger(String, UInt32)

使用控制通道觸發程式標識碼和伺服器保持運作間隔的值,建立新的 ControlChannelTrigger 物件。

屬性

名稱 Description
ControlChannelTriggerId

取得字串,可用來區分本機計算機上的各種控制通道觸發程式。

CurrentKeepAliveIntervalInMinutes

取得網路保持運作間隔,以分鐘為單位,由 TCP 堆疊中的低層級網路元件根據目前的網路狀況維護。

IsWakeFromLowPowerSupported

取得值,指出是否支援從低功率狀態喚醒。

KeepAliveTrigger

取得 物件,表示與 ControlChannelTrigger 相關聯的 keep-alive 觸發程式 物件,應用程式應該用來繫結啟用類別與背景訊息代理程式基礎結構。

PushNotificationTrigger

取得 物件,表示與 ControlChannelTrigger 相關聯的推播通知觸發程式, 應用程式應該用來系結啟用類別與背景訊息代理程式基礎結構的物件。

ServerKeepAliveIntervalInMinutes

取得或設定伺服器保持運作間隔,以分鐘為單位向系統註冊,以指出何時應該喚醒應用程式與相關聯的網路連線。

TransportObject

取得系統用於與 controlChannelTrigger 對象相關聯之 傳輸連線的傳輸物件。

方法

名稱 Description
Close()

關閉 ControlChannelTrigger 物件。

DecreaseNetworkKeepAliveInterval()

提供一個方法,讓應用程式指出系統維護的網路保持運作間隔與網路媒介喚醒的時間太長,而且應該減少。 此方法適用於 Windows.Networking.Sockets 和相關命名空間中的類別專案。

Dispose()

執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。

FlushTransport()

排清與 ControlChannelTrigger 相關聯之傳輸連線使用的任何網路數據, 網路堆棧。

UsingTransport(Object)

設定 Windows.Networking.Sockets 和相關命名空間中的類別專案所要使用的傳輸連線。

WaitForPushEnabled()

允許應用程式通知系統已建立連線,而且系統應該完成控制通道觸發程式的內部設定。

適用於

另請參閱