微软.Net开发中的多线程编程总结
日期:2007年10月16日 作者: 查看:[大字体 中字体 小字体]-
本文将对微软.Net开发中的多线程编程进行一个简单的总结,相信对大家会有所帮助的。下面就具体来看看:
不需要传递参数,也不需要返回参数
我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下:
ThreadStart threadStart=new ThreadStart(Calculate);
Thread thread=new Thread(threadStart);
thread.Start();
public void Calculate(){
double Diameter=0.5;
Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);
}上面我们用定义了一个ThreadStart类型的委托,这个委托制定了线程需要执行的方法:Calculate,在这个方法里计算了一个直径为0.5的圆的面积,并输出.这就构成了最简单的多线程的例子,在很多情况下这就够用了,然后ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数,这显然是个很大的不足,为了弥补这个缺陷,聪明的程序员想出了许多好的方法,我们将在需要传递多个参数一节中进行介绍,这里我们先介绍.Net为了解决这个问题而设定的另外一个委托:就是ParameterizedThreadStart ,我会在下面详细讲述。
需要传递单个参数
ParameterThreadStart的定义为void ParameterizedThreadStart(object state)??使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下
ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread()
thread.Start(0.9);
public void Calculate(object arg){
double Diameter=double(arg);
Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);
}例2
Calculate方法有一个为object类型的参数,虽然只有一个参数,而且还是object类型的,使用的时候尚需要类型转换,但是好在可以有参数了,并且通过把多个参数组合到一个类中,然后把这个类的实例作为参数传递,就可以实现多个参数传递
需要传递多个参数
虽然通过把需要的参数包装到一个类中,委托ParameterizedThreadStart就可以传递多个参数,但是由于这个委托的传入参数是object,所以不可避免的需要进行参数转换,下面还有几个常用的参数传递方法,让我们来一一看来
使用专门的线程类
这是许多程序员爱使用的经典模式,简单来说,就是把需要另起线程执行的方法,和他需要的参数放到一个类中,参数作为了类的属性,调用时声明此类的实例,然后初始化属性,方法执行时直接使用类里初始化好的属性来执行,这样方法本身就可以不需要参数,而又起到了多参数传递的效果,于是使用本文最开始提到的不带参数的ThreadStart委托就可以了,并且由于需要执行的方法和参数都放在一个类中,充分体现了面向对象的特点.具体方法如下
还是计算面积的方法的例子,我们把这个方法用一个类包装起来,输入参数Diameter(直径)是这个类的一个字段
public class MyThread
- [1] [2] [3] [4] 下一页
-
- 微软.Net开发中的多线程编程总结 相关文章:
- ·XP提示“虚拟内存不足”原因总结
- ·学习CSS制作网页总结的一些经验技巧
- ·结束SQL注入隐患3招
- ·Coreldraw结合 R.A.V.E 制作动画
- ·cn域名收录实验小结
- ·CSS常见问题和技巧总结
- ·理解ASP.NET中的三层结构
- ·HTML基础:HTML的基本结构
- ·Web 的内容、结构与表现漫谈
- ·QQ宠物猪猪恋爱结婚之路及问答手册
- 微软.Net开发中的多线程编程总结 相关软件
- ·《冰封王座》地图:梦之旅团1.41—圣彼得的终结
- ·《结界师 鸟森妖奇谈》(日)模拟器
- ·《魔鬼终结者》模拟器 枪战类街机
- ·《仙剑奇侠传四》结局动画
- ·《魔兽》三国姜维传 结局电影
- ·《新结婚时代》
- ·《请给我结果》
- ·国民待遇启示录:二元结构下的中国
- ·第三课堂之户外结绳
- ·二00四年总结
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Community Server专题三:HttpModule
- ·ASP.Net2.0 GridView 多列排序,显示排序图标,分页
- ·根据选择的树形节点用asp.net结合dw和js动态生成可移动可展开的层
- ·在 ASP.NET 2.0 中上载文件
- ·通过webservices上传下载文件
- ·让ASP.NET简便使用SCRIPT
- ·CMPP SP端 C# 实例
- ·生成 ContentRotator ASP.NET 服务器控件
- ·揭开ASP.NET中Cookie编程的奥秘
- ·生成静态文件的新闻系统核心代码(.net C#)
- ·ASP.NET技巧:用MasterPage 代替 PageBase
- ·ASP.NET2.0数据操作之母板页和站点导航
- ·C#捕捉摄相头的数据流
- ·理解并扩展 ASP.NET 2.0 中的站点导航系统
- ·Community Server专题四:HttpHandler
- ·DataList嵌套实例
- ·ASP.NET技巧:教你制做Web实时进度条
- ·将图片插入数据库并使用asp.net读取出来的正确方法
- ·ASP.NET:Repeater控件的详解
- ·如何在上传的图片上加上版权文字
特别推荐
- ·.net基础知识错误注意二十二点知识
- ·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
- ·.NET基础知识-什么是.NET
- ·初学C#+ASP.NET+Oracle时积累的备忘点滴
- ·专家详解:复杂表达式的执行步骤
- ·asp.net中的加密方法
- ·DataGrid常见关注问题解决方案
- ·学习笔记 ASP.NET 5种页面转向法
- ·ASP.NET网络编程中经常会用到的27个函数集
- ·ASP.NET之上传文件管理策略
- ·专家:用.NET动态创建类的实例讲解
- ·ASP.NET WEB服务和Flash打造MP3播放器
- ·精通ASP.NET中弹出窗口技术
- ·asp.net常用代码
- ·asp.net创建文件夹的IO类的问题
- ·Asp.Net函数集
- ·Asp.net cache 简述
- ·如何最大限度提高.NET的性能 (续)
- ·.NET编程规范
- ·Asp.net1.1升级到2.0遇到的一些问题总结
