ChannelBase 类

定义

提供自定义通道的基实现。

public ref class ChannelBase abstract : System::ServiceModel::Channels::CommunicationObject, System::ServiceModel::Channels::IChannel, System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class ChannelBase : System.ServiceModel.Channels.CommunicationObject, System.ServiceModel.Channels.IChannel, System.ServiceModel.IDefaultCommunicationTimeouts
type ChannelBase = class
    inherit CommunicationObject
    interface IChannel
    interface ICommunicationObject
    interface IDefaultCommunicationTimeouts
Public MustInherit Class ChannelBase
Inherits CommunicationObject
Implements IChannel, IDefaultCommunicationTimeouts
继承
派生
实现

注解

重要

使用不受信任的数据调用此类中的方法存在安全风险。 仅使用受信任的数据调用此类中的方法。 有关详细信息,请参阅 验证所有输入

ChannelBase 类提供 IChannel 接口的抽象基类实现。 同时,还要求每个通道必须与通道管理器关联。 请注意,可用于创建 ChannelBase 实例的唯一构造函数需要 channelManager 输入参数。

通过继承状态机的 CommunicationObject 实现来对状态更改进行管理。

ChannelBase 会从与之关联的 ChannelManagerBase 获取打开、关闭、发送和接收操作的默认通信超时。

ChannelBase 还负责对管理器加以管理。 除了公开对管理器的引用之外,该基类还会在创建和销毁通道时通知管理器。 但是对管理器的引用只在销毁通道之前有效。

即使您使用基类,也必须提供打开和关闭通道的行为。 这些方法的默认实现不会提供有用信息。

此外,任何时候要实现通道,都必须确保重写 GetPropertyGetProperty 是沿通道堆栈传达信息的绝佳方式,无需知道你下面有哪些通道,或者上面哪些通道可以执行查询。 定义可从中查询可用信息的接口。 如果不能识别 GetProperty 的类型参数,则委托给堆栈中的下一个通道,如果要在堆栈底部创建一个新的传输通道,则返回 null

构造函数

ChannelBase(ChannelManagerBase)

初始化 ChannelBase 类的新实例。

属性

DefaultCloseTimeout

获取为完成关闭操作提供的默认时间间隔。

DefaultOpenTimeout

获取为完成打开操作提供的默认时间间隔。

DefaultReceiveTimeout

获取为完成接收操作提供的默认时间间隔。

DefaultSendTimeout

获取为完成发送操作提供的默认时间间隔。

IsDisposed

获取一个值,该值指示通信对象是否已被释放。

(继承自 CommunicationObject)
Manager

获取与当前通道关联的通道管理器。

State

获取指示通信对象当前状态的值。

(继承自 CommunicationObject)
ThisLock

获取在状态转换过程中保护类实例的相互排斥锁。

(继承自 CommunicationObject)

方法

Abort()

使通信对象立即从其当前状态转换到正在关闭状态。

(继承自 CommunicationObject)
BeginClose(AsyncCallback, Object)

开始一个异步操作以关闭通信对象。

(继承自 CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

开始一个异步操作以在指定超时内关闭通信对象。

(继承自 CommunicationObject)
BeginOpen(AsyncCallback, Object)

开始一个异步操作以打开通信对象。

(继承自 CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

开始一个异步操作以在指定时间间隔内打开通信对象。

(继承自 CommunicationObject)
Close()

使通信对象从其当前状态转换到关闭状态。

(继承自 CommunicationObject)
Close(TimeSpan)

使通信对象在指定时间间隔内从当前状态转换到关闭状态。

(继承自 CommunicationObject)
EndClose(IAsyncResult)

完成一个异步操作以关闭通信对象。

(继承自 CommunicationObject)
EndOpen(IAsyncResult)

完成一个异步操作以打开通信对象。

(继承自 CommunicationObject)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Fault()

使通信对象从其当前状态转换到出错状态。

(继承自 CommunicationObject)
GetCommunicationObjectType()

获取通信对象的类型。

(继承自 CommunicationObject)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetProperty<T>()

从通道堆栈的适当层,返回所请求的类型化对象(如果存在)。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnAbort()

在调用了一个同步中止操作,从而引起通信对象转换为关闭状态的情况下,该方法插入对通信对象的处理。

(继承自 CommunicationObject)
OnBeginClose(TimeSpan, AsyncCallback, Object)

在调用了异步关闭操作,从而引起通信对象转换为正在关闭状态的情况下,该方法将插入处理。

(继承自 CommunicationObject)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

在调用了异步打开操作,从而引起通信对象转换为正在打开状态的情况下,该方法将插入处理。

(继承自 CommunicationObject)
OnClose(TimeSpan)

在调用了一个同步关闭操作,从而引起通信对象转换为正在关闭状态的情况下,该方法插入对通信对象的处理。

(继承自 CommunicationObject)
OnCloseAsync(TimeSpan)

提供自定义通道的基实现。

(继承自 CommunicationObject)
OnClosed()

在向关闭状态过渡期间使用诊断跟踪。

OnClosing()

在通信对象转换到正在关闭状态的过程中被调用。

(继承自 CommunicationObject)
OnEndClose(IAsyncResult)

在关闭通信对象时完成一个异步操作。

(继承自 CommunicationObject)
OnEndOpen(IAsyncResult)

在打开通信对象时完成一个异步操作。

(继承自 CommunicationObject)
OnFaulted()

在调用了同步错误操作,从而引起通信对象转换为出错状态的情况下,该方法插入对通信对象的处理。

(继承自 CommunicationObject)
OnOpen(TimeSpan)

在通信对象转换为打开状态(此过程必须在指定时间间隔内完成)后插入对通信对象的处理。

(继承自 CommunicationObject)
OnOpenAsync(TimeSpan)

提供自定义通道的基实现。

(继承自 CommunicationObject)
OnOpened()

在通信对象转换到已打开状态的过程中被调用。

(继承自 CommunicationObject)
OnOpening()

在通信对象转换到正在打开状态的过程中被调用。

(继承自 CommunicationObject)
Open()

使通信对象从已创建状态转换到已打开状态。

(继承自 CommunicationObject)
Open(TimeSpan)

使通信对象在指定时间间隔内从已创建状态转换到已打开状态。

(继承自 CommunicationObject)
ThrowIfDisposed()

如果通信对象已释放,则引发异常。

(继承自 CommunicationObject)
ThrowIfDisposedOrImmutable()

如果通信对象的 State 属性未设置为 Created 状态,则引发异常。

(继承自 CommunicationObject)
ThrowIfDisposedOrNotOpen()

如果通信对象未处于 Opened 状态,则引发异常。

(继承自 CommunicationObject)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

事件

Closed

当通信对象转换到已关闭状态时发生。

(继承自 CommunicationObject)
Closing

当通信对象转换到正在关闭状态时发生。

(继承自 CommunicationObject)
Faulted

在通信对象转换到出错状态时发生。

(继承自 CommunicationObject)
Opened

当通信对象转换到已打开状态时发生。

(继承自 CommunicationObject)
Opening

当通信对象转换到正在打开状态时发生。

(继承自 CommunicationObject)

显式接口实现

IAsyncCommunicationObject.CloseAsync(TimeSpan)

提供自定义通道的基实现。

(继承自 CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

提供自定义通道的基实现。

(继承自 CommunicationObject)
IDefaultCommunicationTimeouts.CloseTimeout

获取 close 方法(由通信对象调用)在超时之前的时间间隔。

IDefaultCommunicationTimeouts.OpenTimeout

获取 open 方法(由通信对象调用)在超时之前的时间间隔。

IDefaultCommunicationTimeouts.ReceiveTimeout

获取 receive 方法(由通信对象调用)在超时之前的时间间隔。

IDefaultCommunicationTimeouts.SendTimeout

获取 send 方法(由通信对象调用)在超时之前的时间间隔。

扩展方法

CloseHelperAsync(ICommunicationObject, TimeSpan)

提供自定义通道的基实现。

OpenHelperAsync(ICommunicationObject, TimeSpan)

提供自定义通道的基实现。

GetInternalCloseTimeout(CommunicationObject)

提供自定义通道的基实现。

适用于