CommunicationObject子类型
using System;
using System.ServiceModel.Channels;
namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
MyCommunicationObject myCommObject = new MyCommunicationObject();
}
}
class MyCommunicationObject : CommunicationObject
{
//Implement abstract member
protected override TimeSpan DefaultCloseTimeout { get { return TimeSpan.FromSeconds(1); } }
protected override TimeSpan DefaultOpenTimeout { get { return TimeSpan.FromSeconds(1); } }
protected override void OnAbort() { }
protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { return null; }
protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) { return null; }
protected override void OnClose(TimeSpan timeout) { }
protected override void OnEndClose(IAsyncResult result) { }
protected override void OnEndOpen(IAsyncResult result) { }
protected override void OnOpen(TimeSpan timeout) { }
//Implement virtual member
protected override void OnOpened()
{
base.OnOpened();
}
protected override void OnOpening()
{
base.OnOpening();
}
}
}
Open和BeginOpen方法
打开一个CommunicationObject子类型发生的事情:
MyCommunicationObject myCommObject = new MyCommunicationObject();
myCommObject.Open();
- CommunicationObject:检查状态是否可以转换为Open
- MyCommunicationObject:调用虚方法OnOpening
- CommunicationObject:激活Opening事件,调用委托方法
- MyCommunication:调用OnOpen方法
- MyCommunication:调用OnOpened方法
- CommunicationObject:状态转换为Opened
- CommunicationObject:激活Opened方法,调用委托方法