1

我已经在 C# 中创建了这个程序,但我收到了“预期方法名称”错误。我究竟做错了什么?

for (int i = 0; i < numberofThreads2; i++)     
{   
    Thread thread1 = new Thread(new ThreadStart (Start(1, 2, 3, 4, 5)));
    thread1.Start();
}
4

4 回答 4

5

您正在创建错误的线程委托。尝试:

Thread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));
于 2012-07-09T16:42:17.247 回答
4

ThreadStart是具有签名的委托void ThreadStart()。这与 call 不同Start(...),后者实际上Start立即运行,而不是在新线程中传递委托来执行此操作。您可能正在寻找Thread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));,它创建了一个与以下方法等效的 lambda,该方法可以转换为ThreadStart

void myLambda()
{
    Start(1, 2, 3, 4, 5);
}
于 2012-07-09T16:42:54.123 回答
1

ThreadStart因为 ThreadStart 是一个委托,它的目的是封装一个方法,所以期待一个方法的名称。

像这儿

public void foo () { }

ThreadStart ts = new ThreadStart(foo);
于 2012-07-09T16:43:46.497 回答
0
new Thread(()=> Start(1,2,3,4,5)).Start();
于 2012-07-09T16:46:47.113 回答