[工学]线程与异步编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]线程与异步编程

线程和异步编程 线程介绍 委托 在.NET中使用线程 线程安全 线程的特殊主题 .NET中的异步编程 一、线程介绍 线程概述 .NET对线程的支持概述 .NET的线程体系结构 1.线程概述 线程 操作系统分配处理器时间的基本单位 支持多个活动同时进行 多线程的优点 允许应用程序进行后台处理,同时保持对用户界面的响应 区分任务的优先级 通过网络进行通信,如和Web服务器、数据库进行通信 使用线程的潜在缺点 会增加操作系统负担,降低应用程序性能,例如,线程上下文切换 控制多个线程的代码执行是复杂而又易出错的 2. .NET对线程的支持概述 基本的线程命名空间 System.Threading 标准的异步编程设计模式 隐藏线程的创建和同步细节 由 .NET Framework的委托类和 IAsyncResult 接口提供支持 3. .NET的线程体系结构 第五章 线程和异步编程 线程介绍 委托 在.NET中使用线程 线程安全 线程的特殊主题 .NET中的异步编程 二、委托 委托 多路广播委托 1. 委托 使用委托的场景 声明委托 实例化委托 调用委托 使用委托的场景 声明委托 委托声明定义一个类型,该类型封装了一个有一系列参数和返回值的方法 声明委托类似于方法的定义,但没有方法体,定义的前面加上delegate关键字 定义委托基本上是定义一个新类,可以在定义类的任何地方定义委托,并可以使用访问修饰符 实例化委托 用 New 操作符来创建委托对象 一旦委托被创建,它所关联的方法便固定了 调用委托 用下列方式来调用委托 在委托对象的名称后加上被小括号括起来的参数的方式来调用委托 二、委托 委托 多路广播委托 多路广播委托 使用多路广播委托的场景 单路广播委托和多路广播委托 创建和调用多路广播委托 C#语言特殊的用法 委托细节 使用多路广播委托的场景 单路广播委托和多路广播委托 所有的委托都包含调用列表 当委托被调用时,委托包含的方法被执行 单播委托直接继承自System.Delegate 调用列表只包含一个方法 多播委托继承自System.MulticastDelegate 调用列表包含多个方法 Combine 和 Remove 被用来添加或者从调用列表中移除引用 用 GetInvocationList方法取得委托调用列表 用委托的Target 和 Method 属性来决定 哪个对象接收回调 哪个方法将被调用 创建和调用多路广播委托 C#语言特殊的用法 C# 中,返回值为 void 的委托是 MulticastDelegate 类的实例 在C# 中,用 + 和 – 操作符来添加和移除调用列表中的项 比 Combine 和 Remove 方法更简单 委托细节 一个委托的声明会引起编译器产生一个新类 多媒体演示 委托 第五章 线程和异步编程 线程介绍 委托 在.NET中使用线程 线程安全 线程的特殊主题 .NET中的异步编程 三、在.NET中使用线程 启动线程 Thread类的属性和参数 管理线程 线程本地存储区 中断和终止线程 1.启动线程 创建线程对象实例 构造函数以 ThreadStart委托作为它的惟一参数 ThreadStart 委托引用新线程将要执行的方法 直到 Thread.Start方法被调用,线程才开始执行 下例中,MyClass.AStaticMethod方法的代码被执行 2.Thread类的属性和参数 使用 Thread.Name 和Thread.Priority 属性来获取或设置线程的名称和优先级 通过设定 Thread.IsBackground 属性来指定是前台线程还是后台线程 后台线程不会使托管执行环境处于活动状态 在对象中封装线程参数 3.管理线程 Thread.Sleep 引起当前线程阻塞 Suspend 和 Resume 方法通常没用处 会导致像死锁这样严重的应用程序问题 Thread.Join等待其他线程退出 Thread.WaitHandle 方法等待一个或多个事件 Thread.ThreadState 属性是线程状态的位掩码 4.线程本地存储区 托管线程本地存储包含只和某个线程相关的数据 线程相关的静态字段 用ThreadStaticAttribute 属性来修饰静态字段 构造函数代码只在第一个线程中运行,其他线程中线程静态变量被初始化为null 5.中断和终止线程 Thread.Interrupt 方法 从任何等待状态唤醒线程并引发 ThreadInterruptedException 异常 Thread.Abort 方法 不能保证线程立刻被终止,所以使用Thread.Join来等待直到线程终止 从任何等待状态唤醒线程并引发 Thread

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档