对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#中多线程的使用三(调用方法和传参)的更多相关文章

  1. JavaScript去除空格的三种方法(正则/传参函数/trim)

    方法一: 个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 其次.这个方法使用了JavaScript 的prototype 属性 其实你不使用这个属性一样可以用函数实现.但这样做后用起来比较 ...

  2. Delphi 中多线程同步的一些处理方法

    Delphi 中多线程同步的一些处理方法   当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...

  3. Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)

    Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...

  4. Openerp 中打开 URL 的三种 方法

    来自:http://shine-it.net/index.php/topic,8013.0.html 最近总结了,Openerp 中打开 URL 的三种 方法: 一.在form view 添加 < ...

  5. mysql 中添加索引的三种方法

    原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以 ...

  6. jQuery中detach&&remove&&empty三种方法的区别

    jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...

  7. (1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用

    1.构造方法和方法重载如: Person p = new Person(); - 声明Person类型的引用p指向Person类型的对象 p.show(); - 调用名字为show()的成员方法 1. ...

  8. C#中datatable导出excel(三种方法)

    方法一:(拷贝直接可以使用,适合大批量资料, 上万笔) Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Offi ...

  9. Android开发中完全退出程序的三种方法

    参考: http://android.tgbus.com/Android/tutorial/201108/363511.shtml Android程序有很多Activity,比如说主窗口A,调用了子窗 ...

随机推荐

  1. Linux内核基础

            Linux系统运行的应用程序通过系统调用来与内核通信.应用程序通常调用库函数(比如C库函数)再有库函数通过系统调用界面,让内核带其完成各种不同的任务. 下面这张图显示的就是应用程序,内 ...

  2. Android之Gallery和Spinner-Android学习之旅(二十九)

    Spinner简介 spinner是竖直方向展开一个列表供选择.和gallery都是继承了AbsSpinner,AbsSpinner继承了AdapterView,因此AdaptyerView的属性都可 ...

  3. Mybatis源码之Statement处理器SimpleStatementHandler(四)

    SimpleStatementHandler就是使用基本的Statement来执行query.batch.update等操作,其实现还是比较简单的,当然在执行过程中会涉及keyGenerator和Re ...

  4. C++实现最小堆及插入,调整顺序,删除堆顶元素的操作

    上次用Java实现了最大堆的封装,这次就来写一下最小堆的实现吧 插入函数的思路: 向堆中插入元素有两种情况,一种是堆为空,那么就让插入值作为根节点即可:另一种是堆不为空,那么此时就要进行判断当前节点与 ...

  5. ArrayList与Vector的区别

    ArrayList与Vector的区别 相同 这两个类都实现了List接口. 他们都是有序集合. 不同 ArrayList实现不是同步的,Vector实现是同步的. ArrayList与Vector都 ...

  6. Java接口interface

    Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...

  7. awk字符串函数及其意义

     awk字符串函数及其意义 awk提供了强大的内置字符串函数,用于实现文本的字符串替换.查找以及分隔等功能. awk字符串函数主要有:gsub.index.length.match.split.sub ...

  8. (六十二)纯代码搭建UI

    在Xcode6中,去掉了Empty Application的选项,因此可以通过先创建SingleView,再删除storyboard,并且把工程设置中的main Interface清空. 通过AppD ...

  9. 【Unity Shaders】Diffuse Shading——向Surface Shader添加properties

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  10. 【一天一道LeetCode】#47. Permutations II

    一天一道LeetCode系列 (一)题目 Given a collection of numbers that might contain duplicates, return all possibl ...