parameterizedthreadstart,parameterizedthreadstart 参数
C# 中线程函数使用多个参数,并且得到返回值问题
如果用多线程的话,相直接获取是没有办法的,因为这个程序是在另一个线程中执行的,当前线程会不等它执行完,就把后面的代码执行掉了
变通的方法,把这个方法执行的结果赋值给一个静态变量,然后读取这个静态变量的值~~~
如果有多个值,你可以把这些值放到一到静态的数组或是hashtable中~~~
其实你这个思路是错误的:
根据你的说明,你是想在每个页面都有去执行这个方法,而且还要获取结果。
1、这个线程和你的当前页面不在同一个线程,当前页面并不知道你这个threadtryrequest在别的线程中是什么样的状态,当前页面的代码也不会等你这个这个线程执行完就执行掉了,所以你不可能马上拿到这个线程的值的。
2、你这个应用,明显不该用异步的线程来执行,如果要用同步模式,我不知道你这个是为了什么目的把它放到线程中执行,因为你用同步模式,你想等这个线程的执行结果,等的时间和在页面顺序执行是一样的甚至更多~~~
你可以说一下你的目的是什么吗?
就你的描述来看,你根本没必要用线程。。。
从你的代码来看,你可能是想提高页面打开速度,把执行慢的代码放到线程中执行。。。
如果从这个思路来看是对的,不过光这样可不用,你还得用缓存,把执行结果放到缓存中再由线程或是线程池来维护。。。
总之,在一个页面中执行这么低效率的代码,整个解决方案就有问题。。。
===================================================================
public
string
threadtryrequest(string
strurl,
string
parm)
{
thread
throne
=
new
thread(this.threadproc);
//创建线程
threadparameter
parameter
=
new
threadparameter();
//实例化threadparameter对象,并赋值
parameter.strurl
=
strurl.tostring();
parameter.parm
=
parm.tostring();
throne.start(parameter);
//开启线程
return
strstate;
//返回字符串
}
你想在这里就获取到值?
那是获取不到的....
return
strstate;
执行了
this.threadproc(parameter)
还没执行完了,这个时候strstate
还没被赋值,
所以我说你的思路是错误的....
你想当时就知道一个线程的执行结果,除非你等~~~
要不获取不到的~~~
Task 传匿名委托时,怎么使用参数才正确
重载,带参数的线程用public Thread(ParameterizedThreadStart start);参数必需是object类型ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ThreadMethod); Thread myThread = new Thread(ParStart); object obj = "hello"
C#线程调用方法时,怎么传参数过去
写一个类,把参数封装一下即可。见以下代码
using?System;
using?System.Threading;
public?class?MyThreadClass
{
????private?int?x;
????public?MyThreadClass?(int?x)
????{
????????this.x?=?x;
????}
????public?void?MyThread()
????{
????????Console.WriteLine("Parameter?=?{0}",?x);
????}
}
class?Program
{
????static?void?Main(string[]?args)
????{
????????MyThreadClass?mtc?=?new?MyThreadClass(100);
????????Thread?t?=?new?Thread(mtc.MyThread);
????????t.IsBackground?=?true;
????????t.Start();
????????Console.ReadKey();
????}
}