c程序设计典教程清华.pptx

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

2021/8/11;第八章基于事件驱动的程序设计技术;第八章基于事件驱动的程序设计技术;8.1基于事件的编程思想;8.1基于事件的编程思想;8.2委托;8.2.1委托(delegate)的概述;8.2.1委托的概述;8.2.2委托的声明、实例化与使用;8.2.2委托的声明、实例化与使用;例如,假设有如下两个方法:

intProduct(intx,inty)

{

returnx*y;

}

intAverage(intx,inty)

{

return(x+y)/2;

}

Calculatea=newCalculate(Product);

Calculatetemp=a;

a=b;

b=temp;;8.2.2委托的声明、实例化与使用;8.2.2委托的声明、实例化与使用;8.2.2委托的声明、实例化与使用;8.2.3多路广播与委托的组合;多路广播示例;8.3事件;8.3.1事件的声明;8.3.1事件的声明;8.3.1事件的声明;例如:先自定义委托,再定义事件;例如:使用泛型EventHandler定义事件;8.3.2事件的预订;例如:预订事件;8.3.2事件的预订;8.3.3事件的引用;例如:引用事件;案例分析;小结:事件驱动编程;8.4基于事件的Windows编程;8.4.1Windows应用程序概述;①轮询机制

特点:事件接收器定期询问事件源是否有它感兴趣的事件发生,以获取事件和解决问题

弊端:事件接收器不知道事件何时发生,必须频繁地访问事件源,以便尽快获取事件。但由于通常事件的发生频率要比轮询的频率小得多,故大部分资源都做了无用功,系统效率低。如果降低轮询的频率,虽然可以增加效率和减少系统的负荷,但造成事件得不到及时处理。;②回调函数机制

在这个机制里,事件源定义回调函数的模板(又称原型),事件接收器实现该函数的实际功能,并让事件源中的回调函数指针指向自己的实际函数。当事件源中的事件发生时,就调用回调函数的指针,这样事件接收器就最先得到了通知并进行处理。

③.NETFramework事件机制

.NETFramework基于委托的事件模型是以回调函数机制为基础的。只是用委托代替了函数指针,这样就降低了编程的难度,而且委托是类型安全的。在运行期间,事件接收器实例化一个委托对象并把它传递给事件源。;2.Windows应用程序项目的组织结构;8.4.2Windows窗体与事件驱动编程;8.4.2Windows窗体与事件驱动编程;8.4.2Windows窗体与事件驱动编程;8.4.2Windows窗体与事件驱动编程;案例分析:P192;课堂练习;(3)下面程序运行后,r的值是?( )

delegateintCall(inta,intb);

staticvoidMain(string[]args)

{

Callf;

f=newCall(Add);

f+=newCall(Sub);

intr=f(5,3);

}

staticintAdd(inta,intb){returna+b;}

staticintSub(inta,intb){returna-b;}

A、2B、5C、8D、无返回值;2021/8/11;2021/8/11

文档评论(0)

159****9610 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6044052142000020

1亿VIP精品文档

相关文档