对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. UNIX网络编程——僵尸进程

         在fork()/exec()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进 ...

  2. App会取代网站吗?

    本文摘自<程序员的修炼:从优秀到卓越>,购买链接:http://product.china-pub.com/3769829 自1999年以来,不管是作为买家还是卖家,我一直是eBay的热心 ...

  3. pig函数以及关键字 的一些实例应用的总结(来自pig笔记)

    http://wenku.baidu.com/link?url=yb7KnpSj9nHxWk_MsEVUezvB24evRf9wR87FX0dTT77pGXNXi6k3o_kTmAkBrpIHTqo6 ...

  4. Caffe框架,训练model并测试数据

    1. 训练model #!/usr/bin/env sh ./build/tools/caffe train --solver=examples/focal_length/focal_solver.p ...

  5. Java中的五种单例模式

    Java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例. 特点: 1,一个类只能有一个实例 2 自己创建这个实例 3 整个系统都要使用这个实例 例: 在下面 ...

  6. java的map

    Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射. 这里有详细的论述http://www.oracle.com/technetwork/c ...

  7. 使用DBMS_LOCK控制程序并发

    在调用并发的程序时,假设两个人同时提交了某一个并发请求,并且传入了同样的参数,假设在程序中使用了对状态的控制,例如在刚进入main函数的时候马上就将状态update了,那么其中某一个人就会查不到该条数 ...

  8. 【一天一道LeetCode】#80. Remove Duplicates from Sorted Array II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Follow ...

  9. 2016 苹果全球开发者大会(WWDC)

    纵观WWDC 2016开发者大会的全部内容,尽管本次大会没有那些新的产品发布,不过能让各位果粉的肾留到秋天,那也是苹果公司对各位果粉的关爱啊.但是对iOS开发者而言,新发布的技术还是比较不错的.主要内 ...

  10. SMEM介绍

    SMEM :shared memory,是高通平台各子系统共享信息的一种机制,通过SMEM机制,PBL可以将信息传递给SBL1,SBL1可以将信息传递给RPM.LK.下面分析一个SMEM信息传递的具体 ...