parameterizedthreadstart,parameterizedthreadstart 参数

http://www.itjxue.com  2023-01-04 15:33  来源:未知  点击次数: 

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();

????}

}

(责任编辑:IT教学网)

更多

推荐其他源码文章