博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中 ThreadStart和ParameterizedThreadStart区别
阅读量:7283 次
发布时间:2019-06-30

本文共 1865 字,大约阅读时间需要 6 分钟。

最主要区别:

1.Thread 是启动一个线程,但是没有参数。

2.ParameterThreadStart  线程可以接受一个输入参数

ThreadStart:

ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数。

ThreadStart threadStart=new ThreadStart(ProcessData);Thread thread=new Thread(threadStart);thread.Start();public void SayHelloToXiaohouye()   {string strName="My name is Xiaohouye";   Console.Write("Hello "+strName);   }

     上面很简单的例子,我们用定义了一个ThreadStart类型的委托,这个委托制定了线程需要执行的方法: SayHelloToXiaohouye,在这个方法里声明一个变量,并输出.这就构成了最简单的多线程的例子,一般情况下,我们都是用这个的。

 

 

ParameterThreadStart:

ParameterThreadStart的定义为void ParameterizedThreadStart(object state),使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下 :

 

ParameterizedThreadStart threadStart=new ParameterizedThreadStart(SayHelloToXiaohouye)Thread thread=new Thread() ;thread.Start("Xiaohouye"); //注意参数一定要用object 类型,否则报错public void SayHelloToXiaohouye(object name){
//使用时候需要转换Console.Write("Hello my name is {0}",name.ToString());}

看了一个参数的例子,下面我们来看下多个参数的例子

,我们通过把多个参数组合到一个类中,然后把这个类的实例作为参数传递,就可以实现多个参数传递,废话不多说,看代码:

 

 

public class AddParameter{    public string a=string.Empty;     public string  b=string.Empty;    public AddParameter(string name1, string name2)    {      a = name1;      b = name2;    }}#endregionclass Program{    static void Main(string[] args)    {      Console.WriteLine("***** Adding with Thread objects *****");      Console.WriteLine("当前线程为:{0}", Thread.CurrentThread.ManagedThreadId);      AddParameter  p = new AddParameter("xiaohouye", "xiaowangzi");      Thread t = new Thread(new ParameterizedThreadStart(Add));      t.Start(p);      Console.ReadLine();    }    #region Add method     //组合参数    static void Add(object data)    {      if (data is AddParams)      {        Console.WriteLine("当前线程为:{0}",Thread.CurrentThread.ManagedThreadId);        AddParameter ap = (AddParameter )data;        Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b);      }    }    #endregion}}

转载地址:http://rkkjm.baihongyu.com/

你可能感兴趣的文章
myeclipse如何修改Web项目名称
查看>>
TCP/UDP
查看>>
ssh无密码连接基本知识
查看>>
ESLint使用文档
查看>>
Eclipse常用的优秀插件在线更新地址,包括MyEclipse10.0
查看>>
Redis事务
查看>>
Jquery easyui中tabs新建标签设置href会提交两次请求
查看>>
springboot(九):定时任务
查看>>
is null为判断条件
查看>>
根据注解访问路径的写法 的4种写法
查看>>
突击一下C语言
查看>>
erlang判定闰年,并用eunit测试
查看>>
DatetimeUtil工具类--用于Date和字符串互转的工具类
查看>>
escape()、encodeURI()、encodeURIComponent()区别详解
查看>>
GitLab 7.13.x安装和配置<二>--Linux篇
查看>>
mybatis调用oracle存储过程
查看>>
shell练习五
查看>>
踩坑Apache HttpEntity
查看>>
Core Data的使用(二)
查看>>
MYSQL外键(Foreign Key)的使用
查看>>