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 属性来获取。
通信对象可能会处于四个主状态以及两个暂时状态。 主状态有:
创建
已打开
已关闭
出错
当在这些主状态之间转换时,通信对象可能会处于下列两个暂时状态:
打开
关闭
通信对象可以配置为“已创建”状态。 例如,可以更改其属性,可以注册其事件。 在此状态下,不能进行输入或输出。 例如,不能在此状态下从通道发送或接收消息。
Opening 是通信对象在调用 方法时进入的 Open 临时状态。 除非对派生类另有说明,否则无法配置处于打开状态的对象。 只能从“已创建”状态输入此转换状态。
当打开过程完成时,对象将转换为“已打开”状态。 这种转换到“已打开”状态仅从“打开”状态有效。 除非对派生类另有说明,否则目前无法配置对象。 此时,对象完全可用于消息传送。
关闭是对象在为正常关闭调用方法或中止对象时 Close 进入的临时状态。 此时,对象会由可用变为不可用。 此转换从除“已关闭”状态以外的任何状态都有效。
“已关闭”状态等效于正在释放,并且仍可检查对象的配置。
“出错”状态用于指示对象已转换为不再可以使用它的状态。 有两种主要情况可能会发生此状况:
如果出于某种原因,Open 方法失败,则对象会转换到出错状态。
如果基于会话的通道检测到无法恢复的错误,则会转换到出错状态。 例如,在发生协议错误(即在无效时间收到协议消息)或远程终结点中止会话时,可能会发生此状况。
处于“错误”状态的对象未关闭,并且可能正在保存资源。 应该使用 Abort 方法来关闭出错的对象。 如果 Close 对处于错误状态的对象调用 ,则会引发 , CommunicationObjectFaultedException 因为无法正常关闭对象。