使用.NET 应用程序的Classic COM 组件 输入IAirlineArrivalPager接口的AddArrivalDetails方法的执行情况。
....... 这个方法的执行情况使用了Fire_OnAirlineArrivedEvent帮助程序方法,以此来通报所有接受对象执行IAirlineArrivalPagerEvents,IAirlineArrivalPagerEvents早已预定了事件通知通知。Fire_OnAirlineArrivedEvent是一个函数代理类型方法,通过Implement Connection point wizard,自动地从IConnectionPointImpl派生而来。本质上,当IConnectionPoint::Advise被调用时,它通过映射迭代,这个映射把接口指针存储到接受对象,使用这些接口指针来调用事件通知方法(OnAirlineArrivedEvent),此事件通知方法由客户端接受对象执行。
如果你是一个C++程序师,编译COM感知客户端应用程序来接受通知,你将在客户端应用程序中建立一个接受对象,此客户端应用程序执行IAirlineArrivalPagerEvents接口。然后创建AirlineArrivalPager对象,通过调用,将接受对象的IUnknown接口指针传递到IConnectionPoint::Advise,或者使用一个帮助程序方法,例如:AtlAdvise,把你的接受用线路连接到引起事件的对象,因此你可以接受事件通知。使用VB 6.0,就像在你的宣告中使用WithEvents和为接受通知定义处理程序一样简单。VB将处理简单外表下面所有困难的工作,把由输出接口制造的通知连接到正确的处理程序功能上。 使用委托处理事件 如果对.NET中怎样使用委托很熟悉了,可以跨过这一章进入下一章。.NET中的事件处理基本上是建立在委托事件模式基础上的。委托与C/C++中使用的功能指针相似。基于委托的事件模式,因其使用的简单性而得到普及,正如WFC(Visual J++中的微软基础类库)时代一样。委托允许任何组件引起的事件被联系到处理程序功能或者任何其它组件的方法上,只要函数功能或者方法的函式标记式与委托的函式标记式完全匹配。下面的简单例子,可以了解委托是如何运行。 // 下面是 SayGoodMorning的委托
delegate string SayGoodMorning(); public class HelloWorld { public string SpeakEnglish() { return "Good Morning"; } public string SpeakFrench() { return "Bonjour"; } public static void Main(String[] args) { HelloWorld obj = new HelloWorld(); // 将委托与方法相关联 SayGoodMorning english = new SayGoodMorning(obj.SpeakEnglish); SayGoodMorning french = new SayGoodMorning(obj.SpeakFrench); // 引用委托 System.Console.WriteLine(english()); System.Console.WriteLine(french()); } }/* 结束class类 */
undefined
undefined Good Morning 相关文章: |