黑马程序员技术交流社区

标题: 带参数的方法线程是如何执行的? [打印本页]

作者: 蛋壳    时间: 2014-1-16 00:07
标题: 带参数的方法线程是如何执行的?
OK的!!!
作者: 幸福的彼岸    时间: 2014-1-16 17:08
第一种:使用ParameterizedThreadStart。
调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传递给线程。
第二种:将线程执行的方法和参数都封装到一个类里面。通过实例化该类,方法就可以调用属性来实现间接的类型安全地传递参数。
作者: xydsdsr    时间: 2014-1-17 10:50
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方法的返回值

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2