多线程如何传递参数

//结构体定义structThreadAry{LPCTSTRm_ThreadDown;};//循环开线程CWinThread*pThreadDown;while(m_Fi... //结构体定义
struct ThreadAry
{
LPCTSTR m_ThreadDown;
};

//循环开线程
CWinThread * pThreadDown ;
while(m_FileDiskID->ID.GetLength()>0)
{
int length = m_FileDiskID->ID.Find(",",0 );
CString ID = m_FileDiskID->ID.Left(length);
m_FileDiskID->ID.Delete(0,length+1); //这边处理循环条件
ThreadAry * myThread=new ThreadAry;
myThread->m_ThreadDown=ID; //参数
pThreadDown =AfxBeginThread(ThreadProcDownLoad,(void*)myThread); //开线程
}

//线程函数
UINT ThreadProcDownLoad(LPVOID ThreadParam)
{
ThreadAry *myPara = (ThreadAry *)ThreadParam;
CString ID=myPara->m_ThreadDown;
//这边调用处理函数
return TRUE;
}

我一次循环大概会开4-8个线程,但是问题是,参数只能传进去一个,传进去第几个是随机的,也就是参数会被覆盖掉
这要怎么处理啊
展开
 我来答
弘之枝欣德
2020-03-15 · TA获得超过4000个赞
知道大有可为答主
回答量:3087
采纳率:30%
帮助的人:383万
展开全部
参考多线程编程MSDN
其实给线程传给代理就好了,传参数很麻烦要装箱和拆箱的它接受的参数是ojbect类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
poseidon_k
2012-08-24 · TA获得超过2580个赞
知道小有建树答主
回答量:1223
采纳率:0%
帮助的人:315万
展开全部
传进去第几个是随机的?参数会被覆盖掉?没明白你的意思,请举例说明一下,比如输入是什么,结果会显示什么。
更多追问追答
追问
我传进去的是唯一码,while循环时每开一次线程都有对应的myThread
但是在UINT ThreadProcDownLoad(LPVOID ThreadParam)中断点调试,会发现ThreadParam不为空但是
CString ID=myPara->m_ThreadDown;

是铬铬铬铬铬铬铬铬铬铬铬铬铬铬铬之类的乱码,我感觉更像是空值,只有一次会是我传进去的唯一码别的参数都无效
追答
不好意思,追问回答能容纳的字数少,我给你准备的回答超出限制,贴不上来,你能再发一次问题么?
你如果没匿名,我百度发消息也可以,可是你匿了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式