首页 新闻 会员 周边 捐助

.net 多线程为什么只能使用不带参数的函数?

0
[已解决问题] 解决于 2009-11-27 22:33

比如说一个函数,doWork1(),可以启用线程:ThreadStart start = new ThreadStart(doWork);

Thread t = new Thread(start );

t.start();

而如果是doWork2(object obj1, object obj2)这种函数就不行呢?

helloj3ee的主页 helloj3ee | 初学一级 | 园豆:2
提问于:2009-11-20 15:04
< >
分享
最佳答案
0

 可以使用线程池。

 private void Cl1(object filepath){

//...

}

private void button1_Click(object sender, EventArgs e)
        {

WaitCallback wc = new WaitCallback(this.Cl1);
ThreadPool.QueueUserWorkItem(wc, txtpath.Text);

}

洋葱.Net | 菜鸟二级 |园豆:225 | 2009-11-20 15:26
谢谢
helloj3ee | 园豆:2 (初学一级) | 2009-11-27 22:33
其他回答(3)
0

ThreadStart start = new ThreadStart

这个是无参的方法.

 

new ParameterizedThreadStart();

这个是有参的方法.

一滴血 | 园豆:1602 (小虾三级) | 2009-11-20 17:21
如果想传多个参数,可以定义一个类
支持(0) 反对(0) 一滴血 | 园豆:1602 (小虾三级) | 2009-11-20 17:25
也可以使用,backgroundwork或线程timer,这都可以传参的
支持(0) 反对(0) 一滴血 | 园豆:1602 (小虾三级) | 2009-11-20 17:26
0

如果你不担心混淆,用用匿名函数或者lambda启动线程也是不错的办法

Nana's Lich | 园豆:205 (菜鸟二级) | 2009-11-22 13:06
0

用线程池,或者委托的异步调用

Kolor | 园豆:55 (初学一级) | 2009-11-24 13:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册