《《程序设计》实验报告实验八:多线程和并行程序设计.docx》由会员分享,可在线阅读,更多相关《《程序设计》实验报告实验八:多线程和并行程序设计.docx(3页珍藏版)》请在优知文库上搜索。
1、西华大学实验报告(理工类)开爆学院及实验上,实收时间:年月日学生姓名学号成绩学生所在学院年的专业/班课程名称课程代码实验项目名称JfcIftAt多线程和并行程序设计项目代码指导效如事目学分一、实Ift目的1.了解多线程和并行的基本概念.2、掌握多战程的创建方法。3、学会后动线程并执行命令。4、学会使用BackGroundWorker类。5、了解异步编程基本概念以及学会施于委托的齐步编程.二、实验原理异步编程的基咄是委托与多线程.基于委托的异步编程,BeginInvoke是实现异步调用的核心.NETFramework允忤并步圜用任何方法.为此,应定义与要Iff1.用的方法具有相同签名的委托:公共
2、语古运行时会自动使用适当的签名为该委托定义Bcgin!moke和EmnUVUke方法。BeginInvoke方法启动异步调用.该方法与需要异步执行的方法具有相同的参数,还有另外两个可选多数。第一个参数是一个AsyncCa1.1.back委托,该委托引用在异步调用完成时要调用的方法。第二个参数是一个用户定义的时象,该对象将信息传递到回调方法.BeginInvoke立即返回,不等待异步调用完成。Begin1.nvoke返I可一个IAsyncResu1.t.后者可用于监视异步调用的进度.End1.nvoke方法检索异步弱用的站果。在调用BeginIMOke之后珈时可以调用该方法,如果异步调用尚未完成
3、,则EndInvoke会一直阻止调用线程.宜到异步调用完成.End1.nvoke参数包括需要异步执行方法中的OUt和ref参数(在ViSUa1.Basic中为ByRef和ByRef)以及由BeginInvoke返回的IAsyncKesu1.t.有四种使用BeginInvoke和End1.nvoke进行异步调用的常用方法.调用了BOgin1.nYOkG后,可以:1 .进行某段操作,然后调用End1.nvoke一直阻塞到调用完成.2 .使用IAsyncResu1.t.AsyncVaitHand1.e获取WaitHand1.e.使用它的IaitOne方法将执行一直阻塞到发出WaitHand1.e信号
4、,然后调用EndInvoke.这里主要是主程序等待异步方法,等待异步方法的结果.3 .轮血由BeginInVoke返回的IASynCReSU1.t,IASynCReSU1.t.ISCO1.nPeted确定异步调用何时完成,然后调用EndInvoke44 .将用于回园方法的委托传递给BeginInvoke.该方法在异步两用完成后在ThreadpoC1.线程上执行,它可以调用End1.nvoke(这是在覆制装换回调函数里.面IAsyncResu1.t.AsyncState(BeginInvoke方法的最后一个参数)成委托,然后用委托执行EndInvoke.需要注意的是,必须保证始终在异步调用完成后调用EndInvokeo从实际使用效果来百.只有第四种使用回词函数的方法才能好真正意义上不阻塞.前三种方法都容易阻塞主线程.从而导致主程序界面“假死”的情况。三、实验设备、仪及材料WindgS环境计算机、ViSUaIStudio2012软件四、实验步(按照实际操作过程)1、要求:利用S语吉验证患于委托的弁步编程模式.2、在VS2012中建立一个控制台应用程序,3,参考教材221页输入代码.4、运行并验证.五、实殴过程记录(数据、图表、计算等)六、实Ifc结果分析及问1讨论1、具体来说,该实毅当中的程序用的四种当中的哪1种异步调用方法?2,异步御用有什么优点?