c# 循环开启多线程 lambda表达式带参数问题
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();
}));
}
...全文
相关推荐
C# Lambda表达式和查询表达式
C#之Lambda表达式和查询表达式 本文档下载自百度文库
C# lambda表达式原理定义及实例详解
定义:”Lambda表达式”是一个匿名函数,是一种高效的类似于函数式编程的表达式。 好处:Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。 写法:所有Lambda表达式都使用Lambda运算符=>,该运算符读作”goes to”。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。Lambda表达式x => x * x读作”x goes to x times x”。 注:(左边)输入参数为1个时可以省略小括号,(右边)表达式只有一句时可以省略大括号和return语句 具体的语法形式如下。 访问修饰符 修饰符 返回值类型 方法名(参数列表) => 表达式; publ
C#将Lambda表达式转成Sql语句
C#将Lambda表达式转成Sql语句,根据自己看的文章手写出来的,并配有自己理解的注释,有需要的同学可以自行下载。
C#匿名委托与Lambda表达式详解
主要为大家详细介绍了C#匿名委托与Lambda表达式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C# Lambda表达式
C# Lambda表达式。里面是一些我学习时候的文章,里面是一些网页。只是网上的一些资源,没有进行内容的修改。可以自行百度学习。


