首先我很抱歉,如果有另一个这样的线程,我没有看到它! 我的问题是:我想创建多个线程。但是这些线程必须执行相同的功能。 我怎么能做到这一点? 像这样:
for(int i=0;i<20;i++)
{
Thread t = new Thread(myFunction);
t.Start();
}
有没有办法让这项工作?
答案 0 :(得分:0)
为什么不使用任务?它也是Async(因为我认为这就是你想要的。
for(int i=0;i<20;i++)
{
Task task = new Task(new Action(myFunction));
task.Start();
}
差异可以在这里找到:
答案 1 :(得分:0)
我没有看到你所拥有的任何错误(也许如果你在myFunction中分享一些代码,我们可以得到更好的图片)。
我建议您使用ThreadPool,或者使用Task Parallel库而不是手动创建自己的线程。
以下是一些技巧:
System.Threading.Tasks.Parallel.For(0, 20, myFunction); // myFunction should accept an int, and return void)
如果myFunction的签名不同,你可以使用lambda来“翻译” - 请注意你在这里调用一个调用函数的函数:
Parallel.For(0, 20, i => myFunction()); //(I could pass any param to my function in this example)
这是一个线程池方式
System.Threading.Threadpool.QueueUserWorkItem(myFunction) // myFunction needs to accept an object
//这里是如何使用任何签名将其排队到线程池
ThreadPool.QueueUserWorkItem(s => myFunction());
已经提到的另一张海报使用了任务来完成它。如果你正在做的事情很简单,我会使用Parallel.For。