第11篇 高级主题.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文档。上传文档
查看更多
第11章 高级主题 本章要点: 状态区域图标 多线程 什么是Web Service 序列化 反射 11.1 使用状态区域图标 状态区域,也就是Windows任务栏右边的那个容纳小图标的区域。一些在后台运行的程序,例如MSN Messenger、Norton Antivirus等都在这个区域放置了图标。在.NET中,在状态区域创建一个图标简直容易得令人难以置信。 11.1.1 为程序加入状态区域图标 建立一个新的Windows窗体应用程序Case11_1,在窗体上加入一个通知图标(NotifyIcon)控件,这就是用来在状态区域显示图标的控件。 单击控件属性窗口中Icon属性旁边的省略号按钮 ,为这个控件选取一个图标,这个图标将会出现在Windows的状态区域中。 然后再加入一个上下文菜单(ContextMenu)控件,就可以随意为这个菜单加上几个菜单项。 接着把NotifyIcon1控件的ContextMenu属性设置为ContextMenu1即可。 最后双击窗体的空白部分,在窗体的Form1_Load过程中写入代码: NotifyIcon1.Visible = True 非常简单,是不是?现在程序不仅可以显示一个状态区域图标,而且这个图标还可以有上下文菜单了。 11.1.2 使用状态区域图标 11.2 使用多线程 对多线程的支持是当今流行的程序设计语言的特征。多线程,可以理解成让程序同时执行多个任务的能力。 尽管在只有一个处理器的情况下,“同时”是不可能的,但也可以通过操作系统的调度,让程序看起来像在“同时”做几件事情。这在很多情况下是很重要的,比如,程序可以一边进行一个很费时的计算,一边响应用户输入。当然,同时做几件事情所花的时间往往比一次做一件事情花的时间长,而且,几件事情之间可能互相影响,这些都是在使用多线程的时候需要注意的事情。 11.2.1 龟兔赛跑 在Form1的类定义内部加入一些代码: Private r As New Random() Public Sub RabbitRun() Do While (Rabbit.Left Me.Width - 100) Rabbit.Left += r.Next(100) Thread.Sleep(1500) Loop If (Tortoise.Left Me.Width - 100) Then lblResult.Text = 兔子赢了! End If End Sub Public Sub TortoiseRun() Do While (Tortoise.Left Me.Width - 100) Tortoise.Left += r.Next(10) Thread.Sleep(100) Loop If Rabbit.Left Me.Width - 100 Then lblResult.Text = 乌龟赢了! End If End Sub 这两个函数定义了兔子和乌龟在赛跑时的行为,接下来只需要让它们跑就可以。双击btnStartRace,在弹出的事件处理程序中填入: Dim tRabbit, tTortoise As Threading.Thread tRabbit = New Thread(AddressOf RabbitRun) tTortoise = New Thread(AddressOf TortoiseRun) tRabbit.Start() tTortoise.Start() 这些就是令它们“起跑”的代码。 因为我们直接使用了Thread对象,所以必须在代码页顶部添加对System.Threading命名空间的引用: Imports System.Threading 11.2.2 运行龟兔赛跑 按F5键运行程序,在窗体上按下【开始比赛】按钮,龟兔赛跑就开始了。 11.2.3 线程的启动与休眠 现在,不妨先看看“发令枪”响了以后,程序做了什么: Dim tRabbit, tTortoise As Threading.Thread tRabbit = New Thread(AddressOf RabbitRun) tTortoise = New Thread(AddressOf TortoiseRun) tRabbit.Start() tTortoise.Start() tRabbit和tTortoise都是Thread对象,也就是线程。这并不奇怪,.NET框架是高度面向对象的,连线程这样的抽象概念也是作为对象来处理的。 其次来看看这两个线程是如何被初始化的:AddressOf运算符隐式地创建了一个委托的实例,然后T

文档评论(0)

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

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

1亿VIP精品文档

相关文档