CommunicationState 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義 ICommunicationObject 可處於其中的狀態。
public enum class CommunicationState
public enum CommunicationState
type CommunicationState =
Public Enum CommunicationState
- 繼承
欄位
Closed | 4 | 指出該通訊物件已關閉,而且不再提供使用。 |
Closing | 3 | 指出該通訊物件將轉換成 Closed 狀態。 |
Created | 0 | 指出物件已產生而且是可設定狀態,但是尚未開啟或還未準備好提供使用。 |
Faulted | 5 | 指出該通訊物件遇到其無法復原並導致其不再提供使用的錯誤。 |
Opened | 2 | 指出該通訊物件現在已開啟,而且已準備好提供使用。 |
Opening | 1 |
備註
這個列舉會定義系統中所有通訊物件可有效轉換至其中的狀態,這些物件包括通道、接聽程式、處理站、發送器和服務主機。
管理這些狀態和與其可能有關聯的事件之間之轉換的方法會定義在 ICommunicationObject 介面中。 物件的狀態可使用 State 屬性來取得。
通訊物件可以處於四種主要狀態和兩種過渡狀態。 主要狀態為:
建立時間
已開啟
封閉式
發生錯誤
在這些主要狀態之間轉換時,通訊物件可能會處於兩種過渡狀態:
開啟
關閉
通訊物件可以設定為 [已建立] 狀態。 例如,它的屬性可以變更,而它的事件可以註冊。 在這個狀態下不會發生任何輸入或輸出。 這樣一來,可能在這個狀態中的訊息就無法從通道傳送或接收。
Open 是呼叫 方法時,通訊物件所輸入的 Open 暫時狀態。 除非在衍生類別中另有附註,否則無法設定處於開啟狀態的物件。 此轉換狀態只能從 [建立] 狀態進入。
當開啟的進程完成時,物件會轉換為開啟狀態。 此轉換至 [開啟] 狀態只有在 [開啟] 狀態才有效。 除非在衍生類別中另有附註,否則現在狀態物件的組態是停用的。 此時,物件完全可供訊息傳輸使用。
Closing 是物件在針對正常關機或中止物件叫用方法時 Close 所輸入的暫時狀態。 此時,物件就無法使用 (如果尚未準備好)。 此轉換是從 [已關閉] 狀態以外的任何狀態生效。
Closed 狀態相當於被處置,而且仍然可以檢查物件的組態。
Faulted 狀態是用來指出物件已轉換為無法再使用的狀態。 有兩種主要案例會發生這種情況:
如果 Open 方法因任何理由發生失敗,此物件會轉換至錯誤的狀態。
如果工作階段架構通道偵測到無法復原的錯誤,該通道就會轉換至錯誤的狀態。 執行個體可能會在存在通訊協定錯誤 (也就是說,它在無效階段時收到通訊協定訊息) 或發生遠端端點中止工作階段的情況下,出現這種情形。
處於 Faulted 狀態的物件未關閉,而且可能會保存資源。 Abort 方法應該要用於關閉已發生錯誤的物件。 如果在 Close Faulted 狀態的物件上呼叫 ,則會擲回 , CommunicationObjectFaultedException 因為無法正常關閉物件。