c# 循环开启多线程 lambda表达式带参数问题

snser snser 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
for循环开启多线程,用lambda表达式传递参数,线程里拿到的参数和传递的参数不一样,另外线程名也没有获取到。
具体的在代码里注释了,劳请各位看一下,谢啦!

private void btnSend_Click(object sender, EventArgs e)
{
sendMsgManager(5);
}

private void sendMsgManager(int totalThreadCount)
{
for (int thread = 0; thread != totalThreadCount; thread++)
{
{
//这里传递的参数为0 1 2 3 4
Thread sendMsgThead = new Thread(() => sendMsgThreadAction(thread));
//这里定义了线程名
sendMsgThead.Name = "sendMsgThead" + thread.ToString();
this.Invoke((EventHandler)(delegate
{
rtxtOutput.AppendText(thread.ToString() + "&&&\n");
}));

sendMsgThead.Start();
}
else
{
break;
}
}
}

private void sendMsgThreadAction(int startIndex)
{

this.Invoke((EventHandler)(delegate
{
rtxtOutput.SelectionColor = Color.Blue;
//这里打印出的参数为1 2 3 4 5
//这里打印出的线程名为空
rtxtOutput.AppendText(Thread.CurrentThread.Name + " " + startIndex +"\n");
rtxtOutput.Focus();
}));
}
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
snser
C# 111,128 成员 642,536 内容