进行事件编程的
你也许使用事件编程已经多年了,但是迁移到.NET框架组件时仍需要重新检查它们的内部工作,因为在.NET框架组件中事件位于委托(delegate)的顶层。你对委托了解得越深,使用事件编程时就越能利用其强大的功能。在使用通用语言运行(common language runtime,CLR)的事件驱动框架(例如Windows Forms或)工作时,了解事件在低层是怎样工作的很重要。本文的目标就是让你了解事件在低层是怎样工作的。
事件到底是什么
事件仅仅是一种软件模式(pattern),在事件中通知源对一个或多个处理方法进行回调(callback)。因此事件与接口(interface)和委托(delegate)相似,因为它们都提供了一条途径来设计使用回调方法的应用程序。但是事件生产率更高,因为它比接口和委托更易使用。事件让编译器和Visual Studio .NET集成开发环境在后台为你做了很多工作。
包含事件的设计是基于一个事件源和一个或多个处理程序的。事件源可以是类或对象,事件处理程序是绑定到某个处理方法的委托对象。图1在较高层次显示了数据源与处理方法的联系。
图1.事件源和处理程序
每个事件都根据特定的委托类型定义。对于每个事件源定义的事件,都有一个基于事件下面的委托类型的专用字段,该字段用于跟踪多点传送的委托对象。事件源也提供了一个公共的注册方法,让你可以注册希望的事件处理程序。
上周张家港东海的远月成交极其引人注目 当你建立一个事件处理程序(一个委托对象)并把它与事件源一起注册时,事件源简单地把新的事件处理程序添加到列表的结尾。接着事件源能使用专用字段调用多点传送委托对象的Invoke方法,该方法将执行所有已注册的事件处理程序。
事件真正好的地方是大多数设置工作已经被开发环境完成。你将看到,Visual Basic .NET编译器帮助你在定义事件时自动的添加一个私有字段和一个公共注册方法。你也会看到Visual Studio .NET通过自动生成处理方法的框架定义的代码生成器为你提供了更多帮助。
怀化哪个医院治疗白癜风最好银川哪家医院治妇科好
得了卒中高血压怎么办
-
细说饲养藏獒的条件和主人们应该具备的心理位置
饲养一只健壮藏獒的条件可不像饲养泰迪犬,吉娃娃等小型犬条件那样的简单。藏獒的体型大小,主人们可想而知...[详细]
-
罗威纳咬人造成罗威纳犬咬人的原因有哪些位置
导读:【罗威纳咬人】造成罗威纳犬咬人的原因有哪些?罗威纳犬是一种体型中大型的宠物狗狗,它们被猎物猛犬...[详细]
-
能够威胁到罗威纳犬健康的几种食物位置
罗威纳犬是非常贪吃的狗狗,我们有时喂给它们很多的食物,它们还是用乞求的目光看着我们,其实狗狗是永远都...[详细]
-
苏格兰牧羊犬拉完便便又吃了是为什么位置
今天,我家苏格兰牧羊犬拉了粑粑回头就吃了,这是为什么呢?路西非尔:苏格兰牧羊犬改不了吃屎,狼改不了吃肉...[详细]
-
观赏鱼水霉病和肤霉病的区别位置
>金鱼(详情介绍)观赏鱼水霉病和肤霉病总会让很多新手分不清楚,其实我们可以从发病症状上来进行判断,毕竟治...[详细]
-
高加索犬被雨水淋湿了需要吃什么药位置
38天的高加索犬让雨给浇湿了 得吃什么药啊 现在已经吹干了 要注意什么?月下独舞:保暖观察高加索犬有无异常反...[详细]