首页 新闻 会员 周边 捐助

C#中关于多线程的一种写法 不是很明白,想请教一下大家

0
悬赏园豆:10 [已解决问题] 解决于 2014-11-21 13:08
1 Thread thread = new Thread(() => SendEmailThread(email,username, pwd));
2 
3 public void SendEmailThread(string email,string username,string pwd)
4 {
5 
6   .....
7 
8 }

 

这里是一个多线程,传递参数到子线程中

请问 new Thread( () => SendEmailThread(email,username, pwd))

这种写法是什么意思?虚方法吗?

LiGoper的主页 LiGoper | 初学一级 | 园豆:32
提问于:2014-11-19 17:37
< >
分享
最佳答案
0

一般创建线程就是new Thread(参数)。只是这个参数可以是匿名函数,所以就有了new Thread(()=>{函数体})

简化一下,就是new Thread(()=>函数体),在这个示例中,函数体的内容是SendEmailThread(email,username, pwd)

,所以就有了如题的写法。涉及到的知识点如@大叔 所说,再补充一个闭包。

收获园豆:10
幻天芒 | 高人七级 |园豆:37207 | 2014-11-20 09:29
其他回答(5)
1

() => SendEmailThread(email,username, pwd)

因为 Thread有一个构造函数,它是指线程要执行的函数,它里面参数个数为零,所以第一个括号里面什么也没有,而=>后面就是要执行的函数。

空明流光 | 园豆:111 (初学一级) | 2014-11-19 17:57
0

拉姆达表达式

吴瑞祥 | 园豆:29449 (高人七级) | 2014-11-19 18:13
1

楼主可以搜索

lambda 表达式

以及

匿名方法

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-11-19 20:24
1

楼上大叔正解,里面就是一个方法

() => {SendEmailThread(email,username, pwd);}

()=>{}是个匿名函数

SendEmailThread(email,username, pwd)是函数里面执行的语句.

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-11-19 23:19
0

楼主可以看看代理与事件, 类似C++里的函数指针,Everything is an Object!

徐小朝 | 园豆:211 (菜鸟二级) | 2014-11-20 11:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册