A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蛋壳 中级黑马   /  2014-1-16 00:07  /  1337 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OK的!!!

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

2 个回复

倒序浏览
第一种:使用ParameterizedThreadStart。
调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传递给线程。
第二种:将线程执行的方法和参数都封装到一个类里面。通过实例化该类,方法就可以调用属性来实现间接的类型安全地传递参数。

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
c#带参数的方法线程
如果是Thread th=new Thread(new ParameterizedThreadStart(带参数的方法名));
thread.Start(参数);执行带参数的线程

如果是异步委托
委托类型 委托变量名=new 委托类型(方法名);
委托变量名.BeginInvoke(方法的参数,回调函数,要传进回调函数的一个参数);//启动异步委托,开启另一个线程执行这个委托中的带参数的方法,返回一个IAsyncResult类型
委托变量名.EndInvoke(IAsyncResult类型);//获取方法执行的返回结果

如果是线程池就很简单了
ThreadPool.QueueUserWorkItem(new WaitCallback,object obj)//无返回值,只有一个参数,把方法交给线程池去执行,它会自动分配工作线程完成方法

如果是工作项Task<TResult>//Tresult表示的是返回值的类型
Task<TResult> t=new Task<TResult>(Func委托类型,可以最多一个参数);
t.Start()开始执行
t.Result方法的返回值

一般来说常用的就是线程池和工作项

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马