多重影分身——C#中多线程的使用三(调用方法和传参)
对Thread:
1、使用ThreadStart
- static void Main(string[] args)
- {
- Thread th1=new Thread(new ThreadStart(SayHello));
- th1.Start();
Console.ReadKey();- }
- static void SayHello()
- {
- Console.WriteLine("Hello!");
- }
这种形式只能是无参的空类型函数,如果需要传参数,就得用ParameterizedThreadStart。
2、使用ParameterizedThreadStart
- static void Main(string[] args)
- {
- Thread th1 = new Thread(new ParameterizedThreadStart(SayHello));
- string para="I'm parameter!";
- th1.Start(para); //传入参数para
- Console.ReadKey();
- }
- static void SayHello(object obj) //只能是object类型,只能有一个,多个参数需要封装在一个自定义对象中
- {
- string str = obj as string;
- Console.WriteLine(str);
- }
这个方法依然是空类型,它允许我们传一个参数,但只能是object类型,只能传一个。
在线程池中:
1、调用无参的空类型方法
- static void Main(string[] args)
- {
- ThreadPool.QueueUserWorkItem(new WaitCallback(SayHello)); //这个方法可以简写成ThreadPool.QueueUserWorkItem(SayHello);
- Console.ReadKey();
- }
- static void SayHello()
- {
- Console.WriteLine("Hello!");
- }
2、调用有参的空类型方法
- static void Main(string[] args)
- {
- string para="I'm parameter!";
- ThreadPool.QueueUserWorkItem(new WaitCallback(SayHello), para); //把参数写在这里,这个方法可以简写成ThreadPool.QueueUserWorkItem(SayHello,para);
- th1.Start(para); //传入参数para
- Console.ReadKey();
- }
- static void SayHello(object obj) //只能是object类型,只能有一个,多个参数需要封装在一个自定义对象中
- {
- string str = obj as string;
- Console.WriteLine(str);
- }
这个方法跟ParameterizedThreadStart一样,也是只能传一个object类型的参数。
在达到如下目标时,应使用ThreadPool类:
1.要以最简单的方式创建和删除线程;
2.应用程序使用线程的性能要优先考虑。
在达到如下目标时,应使用Thread类:
1.要控制所创建线程的优先级;
2.希望所使用的线程维护其标识,该标识要与线程一起进行各种操作,经过许多不同的时间段;
3.所使用的线程的寿命较长。
参考资料:http://www.cnblogs.com/leslies2/archive/2012/02/07/2310495.html
多重影分身——C#中多线程的使用三(调用方法和传参)的更多相关文章
- JavaScript去除空格的三种方法(正则/传参函数/trim)
方法一: 个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 其次.这个方法使用了JavaScript 的prototype 属性 其实你不使用这个属性一样可以用函数实现.但这样做后用起来比较 ...
- Delphi 中多线程同步的一些处理方法
Delphi 中多线程同步的一些处理方法 当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...
- Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)
Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...
- Openerp 中打开 URL 的三种 方法
来自:http://shine-it.net/index.php/topic,8013.0.html 最近总结了,Openerp 中打开 URL 的三种 方法: 一.在form view 添加 < ...
- mysql 中添加索引的三种方法
原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以 ...
- jQuery中detach&&remove&&empty三种方法的区别
jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...
- (1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用
1.构造方法和方法重载如: Person p = new Person(); - 声明Person类型的引用p指向Person类型的对象 p.show(); - 调用名字为show()的成员方法 1. ...
- C#中datatable导出excel(三种方法)
方法一:(拷贝直接可以使用,适合大批量资料, 上万笔) Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Offi ...
- Android开发中完全退出程序的三种方法
参考: http://android.tgbus.com/Android/tutorial/201108/363511.shtml Android程序有很多Activity,比如说主窗口A,调用了子窗 ...
随机推荐
- C++_友元函数
1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护 ...
- Hessian探究(一)Hessian与springMVC结合
上一篇博客Hessian探究(一)Hessian入门示例我们初步简单的介绍了一下Hessian的使用入门示例,我们是通过Servlet来暴露Hessian的对外服务的,接下来我们介绍一下通过Sprin ...
- 数据库再设计(Database Redesign)
数据库设计有三个来源:(1)可以从现有数据开始设计数据库,例如从excel表格等,这种模式下需要考虑的问题是数据的normalization,最终通常将数据转化为BCNF范式:(2)设计新的数据库,这 ...
- UNIX网络编程——套接字选项(SO_REUSEADDR)
1.一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用. SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的sock ...
- 软件测试进阶(一)A/B测试终极指南
A/B测试终极指南 A/B测试不是一个时髦名词.现在很多有经验的营销和设计工作者用它来获得访客行为信息,来提高转换率.然而,A/B测试与SEO不同的是,人们都不太知道如何进行网站分析和可用性分析.他们 ...
- Android实现自定义的相机
使用系统相机 android中使用系统相机是很方便的,单这仅仅是简单的使用而已,并不能获得什么特殊的效果. 要想让应用有相机的action,咱们就必须在清单文件中做一些声明,好让系统知道,如下 < ...
- Unity插件 - MeshEditor(一) 3D线段作画 & 模型网格编辑器
之前,因为工作需要,项目中需要动态生成很多的电线,不能事先让模型做好,更不能用LineRenderer之类的,因为画出来没有3D的效果,最主要是拐角的时候还容易破面,而我们要的是真真实实纯3D的电线, ...
- ROS_Kinetic_03 ROS入门向导
ROS_Kinetic_03 ROS入门向导 每个人都有不同的学习习惯和爱好并针对不同的应用进行ROS相关设计与开发, 没有固定不变的学习模式,但以下的内容是通常都会用到的. 1. ROS基础教程 1 ...
- iOS中 用FMDB封装一个SQLite数据库
建立一个单例: DataBaseHandle.h #import <Foundation/Foundation.h> @class PersonModel; @class FMDataba ...
- 【翻译】Ext JS最新技巧——2015-1-2
原文:http://www.sencha.com/blog/top-support-tips-january-2015?mkt_tok=3RkMMJWWfF9wsRolvqvIZKXonjHpfsX7 ...