- 6
- 0
- 约1.13万字
- 约 34页
- 2016-12-03 发布于重庆
- 举报
第六章异步与多线程编程
Newture.net课程系列新程教育C#高级编程.NET方向 第二学期课程第六章 异步与多线程编程本章目录异步编程进程与线程BeginInvoke和EndInvokeIAsyncResult接口和AsyncResult类异步编程的4种方法多线程编程Thread类使用线程池线程同步死锁引言平时我们会用到打印、下载等操作,这类型的操作比较费时,在程序中调用这类比较费时的代码时,调用方如果停在那里等待费时的代码执行完毕,无疑会严重影响程序的可操作性。现在很多应用程序将设置保存在配置文件中,那么当程序启动时由于需要加载配置,然后利用这些配置数据进行一系列的初始化操作,但因为I/O读取操作稍慢,这将导致程序的主窗体不能立刻显示,给用户一种启动过程十分漫长的感觉,用户体验不好。对于这类问题我们怎么去解决?这类问题,可以借助异步调用或者多线程编程模型轻松解决。引言如下是可能的解决方案:把整个初始化处理放进一个单独线程,主线程启动此线程后继续执行其他操作。例如窗体绘制操作,当初始化配置数据的进行还在执行的同时,主窗体也快速的展现在用户眼前。虽然当前主窗体可能还不能完全可用,但给用户一种程序飞快运行的感觉。配置信息初始化线程此刻也在同步执行,将配置文件中的数据读取到内存,并根据配置对当前程序进行初始化。这就是本章将要讨论的异步编程和多线程编程。进程与线程什么是进程?在启动一个应用程序后,系统将会给它分配一定的内存以及其他的一些资源,这些划定的内存以及资源的物理分隔叫做进程。在Windows系统中,可以通过“任务管理器”来查看当前运行的进程。可以看出,每个进程都包含一定数量的线程,例如360Tray.exe有53个线程。什么是线程?线程是系统分配处理器时间资源的基本单元,或者说是进程之内的独立执行的一个单元,对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。从另一个角度来说,线程是由进程创建的,由处理器使用的一个执行序列。进程与线程仔细观察“任务管理器”,会发现“应用程序”和“进程”分属两个不同的选项卡,这说明它们是不同的。一个应用程序可能包含一个或多个进程,每个进程都拥有自己独立的数据、执行代码以及系统资源。进程与线程理解进程和线程是进行异步编程的基础。我们之前使用的都是同步编程,什么是同步编程?同步编程指从第一条语句直到最后一条语句都是顺序执行。同步编程是有缺陷的,改进的方式,就是将同步编程改为异步编程,什么是异步编程?异步编程就是合理地利用多线程处理,从理论上讲,这些线程是“同时”执行的。BeginInvoke和EndInvokeclass Program { public delegate void PrintDelegate(string content); static void Main(string[] args) { PrintDelegate printDelegate = Program.Print; IAsyncResult result = printDelegate.BeginInvoke(hello world, null, null); printDelegate.EndInvoke(result); } public static void Print(string content) { Console.WriteLine(打印中……\n+content); System.Threading.Thread.Sleep(2000); } }在C#中使用线程的方法很多,使用委托的BeginInvoke和EndInvoke方法就是其中之一。BeginInvoke方法可以使用线程异步地执行委托所指向的方法。(委托所代理的目标方法只能为1个)然后通过EndInvoke方法获得方法的返回值(EndInvoke方法的返回值就是被调用方法的返回值),或是确定方法已经被成功调用。IAsyncResult接口和AsyncResult类public interface IAsyncResult {object AsyncState { get; }WaitHandle AsyncWaitHandle { get; }bool CompletedSynchronously { get; }bool IsCompleted { get; } }属性返回类型说明AsyncStateobject 返回一个对象,是启动异步操作的方法的最后一个参数AsyncWaitHandle WaitHandle 获取用于等待异步操作完成的WaitHandle CompletedSynchronously bool 获取一个值,指示异步操作是否同步完成IsCompleted bool 获取一个值,指示异步操作是否已完成IA
您可能关注的文档
- 第五章空调系统的分类.ppt
- 第五讲单元测试与Junit.ppt
- 第五章食品标签.ppt
- 第五章高等教育思想与基本理论.ppt
- 第五讲狄尔泰哲学.ppt
- 第五章第四节区域活动的保育.ppt
- 第五讲图像增强.pptx
- 第五课文化创新(新人教必修3).ppt
- 第八章--普通工业安全卫生.ppt
- 第五章遗传的基本规律.ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 2025年自来水供应专属承包合同样本版.docx VIP
- 2022化工安全与环保第二版课后题答案最新版(完整版).docx VIP
- ASUS华硕主板大师系列Z97-A 用户使用手册 (繁体中文).pdf
- 智能金融:AI 驱动的金融变革.pptx
- 人工智能在心血管无创影像中的应用:前沿技术与临床价值.pdf VIP
- 2025年氢燃料电池在数据中心储能应用趋势.docx
- 2026年中国铁路上海局集团有限公司招聘普通高校毕业生1236人备考题库及答案详解(考点梳理).docx VIP
- 井工煤矿复工复产开工第一课教案.docx VIP
- 社区居务监督培训课件.ppt VIP
- 心灵终结单位全代码.doc VIP
原创力文档

文档评论(0)