C#多线程函数如何传参数

Threadth=newThread(newThreadStart(DownLoad));th.IsBackground=true;th.Start();privatev... Thread th = new Thread(new ThreadStart(DownLoad));
th.IsBackground = true;
th.Start();

private void DownLoad(){ }
我现在想让委托实现参数的传递,就是:
private void DownLoad(string str){ }
如何实现呢。我有找到一个解决方法是:
MyDelegate dele = new MyDelegate (DownLoad);
DownLoad.BeginInvoke("abcd");
可是我没解决掉,有谁知道的帮帮我 。在这里多谢拉。
展开
 我来答
镜馨费莫凌寒
2020-06-21 · TA获得超过3845个赞
知道大有可为答主
回答量:3032
采纳率:27%
帮助的人:222万
展开全部
你那个方法我没怎么用过
这个是我写的一个程序中线程的创建
struct
myarg{
U32
*fd;
U32
*fd_id;
U32
*qsend_msgid,*qrecv_msgid;
struct
my_msg_st
*qsend_data;
struct
my_msg_st
*qrecv_data;
};
main()
{
pthread_t
tidp_init,tidp_read,tidp_write;
my_arg.fd
=
fd;
my_arg.qrecv_msgid
=
&recv_msgid;
my_arg.qsend_msgid
=
&send_msgid;
if(pthread_create(&tidp_init,NULL,thread_fun_date,&my_arg)
!=
0)
{
printf("thread_fun_init
is
over
!\n");
}
if(pthread_create(&tidp_read,NULL,thread_fun_read,&my_arg)
!=
0)
{
printf("thread_fun_read
is
over
!\n");
}
if(pthread_create(&tidp_write,NULL,thread_fun_write,&my_arg)
!=
0)
{
printf("thread_fun_write
is
over
!\n");
}
}
void*thread_fun_read(void
*
my_arg)
{
printf("!!!!!!!
thread_fun_read
!!!!!!!!!!!!\n");
U32
i;
pthread_t
tidp;
struct
myarg
*p_my_arg,fd_myarg[UART_NUM];
p_my_arg
=
(struct
myarg
*)my_arg;
}
韧劲9
2015-06-13 · TA获得超过9223个赞
知道小有建树答主
回答量:1638
采纳率:92%
帮助的人:344万
展开全部
class Params // 线程函数参数类型
{
public int inparam = 0; // 表示一个传入的值
public int outparam = 0; // 表示一个返回的值
}

var pm = new Params { inparam = 1 };
var thread = new Thread(param =>
{
((Params)param).outparam = 10;
Thread.Sleep(2000);
});
thread.Start(pm);
thread.Join();
MessageBox.Show("传出参数的值是 " + pm.outparam.ToString());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0f3f080f4
2009-06-09 · TA获得超过777个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:807万
展开全部
启动带参数的线城 方法接受参数必须用OBJECT类型接受再转换
System.Threading.Thread HangUpthread = new Thread(new ParameterizedThreadStart(OnHangUp));
HangUpthread.Start(data);
data必须是 OBJECT类型 然后在接受里面再转换 也就是说那个函数的参数必须是OBJECT类型!
void test(object date)

说了参数必须是OBJECT类型
private void DownLoad(object str)
{
string str1=(string )str //然后里面再转换成string
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明暄妍Na
2009-06-08
知道答主
回答量:42
采纳率:0%
帮助的人:19万
展开全部
你INVOKE时没用delegate啊,你到底想做什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Valux
2009-06-08
知道答主
回答量:11
采纳率:0%
帮助的人:14.4万
展开全部
private void DownLoad(object objstr)
{
string str=(string)objstr
}

Thread th = new Thread(new ParameterizedThreadStart(DownLoad));
th.IsBackground = true;
th.Start(参数);

给分了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式