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 的型別引數時,請向下委派 (Delegate) 到堆疊中的下一個通道;如果您要在堆疊底部建立新的傳輸通道,則傳回 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

取得通訊物件叫用之關閉方法逾時前所經過的時間間隔。

IDefaultCommunicationTimeouts.OpenTimeout

取得通訊物件叫用之開啟方法逾時前所經過的時間間隔。

IDefaultCommunicationTimeouts.ReceiveTimeout

取得通訊物件叫用之接收方法逾時前所經過的時間間隔。

IDefaultCommunicationTimeouts.SendTimeout

取得通訊物件叫用之傳送方法逾時前所經過的時間間隔。

擴充方法

CloseHelperAsync(ICommunicationObject, TimeSpan)

提供自訂通道的基底實作。

OpenHelperAsync(ICommunicationObject, TimeSpan)

提供自訂通道的基底實作。

GetInternalCloseTimeout(CommunicationObject)

提供自訂通道的基底實作。

適用於